android app: network access for external programs - Android Q&A, Help & Troubleshooting

Dear All,
I am trying to develop an app which calls a external program (written in C) using Runtime.getRuntime().exec method. This program is basically an gstreamer based rtsp server and it works good if I run from the android command prompt. However, when I run the program from the app, I am getting the following error.
Failed to bind socket (Permission denied)
I had given the network access in my AndroidManifest.xml file.
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
I also tried this
String cmd = "ping localhost";
Runtime.getRuntime().exec(cmd);
for which I got
ping: icmp open socket: Operation not permitted
I also tried to run an another program from an app (which shows an image on the android screen - surfaceflinger sink). So, I included android.permission.ACCESS_SURFACE_FLINGER in the manifest file. However, it wasn't able to display on surfaceflinger sink.
So, I have a feeling that these permissions are not passed on to these external programs. Is there a way to achieve this? I don't want to convert these 'C' based programs to Java. Can anyone please help me out.
Thanks,
Krishnan

Related

[Q] Android + PHP + SSL issues

Hey Everyone,
I recently downloaded and installed "PHP for Android." I created a .php file that utilizes an SSL connection with port 2195. When I tried running it, I get the following error message:
HTML:
Error:14094410:SSL routines:func(148):reason(1040) in /mnt/sdcard/sl4a/scripts/lot.php on line 19
Warning: stream_socket_client(): Failed to enable crypto in /mnt/sdcard/sl4a/scripts/lot.php on line 19
Warning: stream_socket_client(): unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in /mnt/sdcard/sl4a/scripts/lot.php on line 19
This is my line 19:
"$apns = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);"
I researched what "reason(1040)" means, and supposedly it means that the port is closed. But what firewall is blocking it? The same exact script works when I execute it from my computer from the same wifi connection. Could it be a firewall inside the Android OS?
Any input will be greatly appreciated!!
Thanks!
Does anyone know?
Hey,
We also got that error with the iPhone Push service, and it was due to the certificate not being set correctly (actually the certificate file didn't exist).
I hope this solves your problem if you haven't solved it by now.
Regards,
Chris

sysfs read/write permission for an android app

Hi,
I have been writing a simple application where I want to toggle GPIO pin.
I am trying to export a gpio pin and then set direction and value.
But I am getting following error.
java.io.FileNotFoundException: /sys/class/gpio/export: open failed: EACCES (Permission denied)
Can any one tell me, how would I provide the required permission ?
Note that, with adb commands I am able to export the gpio pin and set the direction or values.
From app level its not working.
Thanks
I think you need root for that, and use Process with native applets
As stated you will have to have root to make that work. Candidates with Google making root harder to get. You might want to keep that in mind as well
Hi there !
What about if I can not root ?

Multi-channel audio: tinyalsa "Permission denied"

I am tasked with writing an app to stream 16-channel audio over USB onto a Nexus 9, using Android 7. I have spent quite a few weeks without success.
In my latest attempt, I have written a module that uses tinyalsa via JNI. (I am using tinyalsa by including the sources for pcm.c and pcm.h in my app; see https://github.com/tinyalsa/.) When I call pcm_open, errno gets set, and an error message is set on the device struct that is returned:
Code:
cannot open device '/dev/snd/pcmC1D0c': Permission denied
Should I try something other than tinyalsa to capture multi-channel audio?
Am I just making improper use of tinyalsa?
Is there something I can do to correct this permissions issue?
Thank you.

Run pidgin in ubuntu touch on a Nexus5. Problem with Mir

Hi
I'm trying to run pidgin in ubuntu touch which is installed on Nexus 5.
I did try to run it in libertine container, however it fails with the follwoing error.
Code:
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
(EE)
Fatal server error:
(EE) Failed to connect to Mir: Failed to connect: not accepted by server
(EE)
I have also tried to run it without the container using the following desktop file
Code:
[Desktop Entry]
Name=Pidgin Internet Messenger
GenericName=Internet Messenger
Comment=Chat over IM. Supports AIM, Google Talk, Jabber/XMPP, MSN, Yahoo and more
Exec=pidgin
Icon=pidgin
StartupNotify=true
Terminal=false
Type=Application
Categories=Network;InstantMessaging;
X-MessagingMenu-UsesChatSection=true
X-Ubuntu-Touch=true
X-Ubuntu-Gettext-Domain=pidgin
X-Ubuntu-XMir-Enable=true
To run pidgin I am using the following script, launching it from phone's command line
Code:
#!/bin/bash
DISP=:1
Xmir :1 -mirSocket /var/run/mir_socket --desktop_file_hint=/home/phablet/pidgin.desktop -debug &
sleep 0.5;
DISPLAY=:1 pidgin &
However, Xmir failed with the following error.
Code:
ARM architecture: Defaulting to software mode because glamor is not stable
XMir initialized with 2 visuals:
Visual id 0x28: ff ff00 ff0000, 24 planes
Visual id 0x29: ff ff00 ff0000, 24 planes
Realize ROOT window 0xb8a6d530 id=0xea "": 1080x1920 +0+0 parent=(nil)
depth=24 redir=0 type=0 class=1 visibility=3 viewable=1
override=0 _NET_WM_WINDOW_TYPE=0()
WM_TRANSIENT_FOR=(nil)
WM_HINTS=<none>
Aborted
I checked that unity is running, and the resullt of "ps aux | grep unity" was
Code:
unity-system-compositor --disable-overlays=false --spinner=/usr/bin/unity-system-compositor-spinner --file /run/mir_socket --from-dm-fd 10 --to-dm-fd 13 --vt 1
I also checked that mir_socket is created and reachable under /var/run and /run directories
There are no errors in lightdm file
But Xorg log file shows the following error
Code:
[ 89.205] (II) No BusID or DriverName specified - opening /dev/dri/card0
directory
[ 89.205] (WW) Falling back to old probe method for fbdev
[ 89.205] (WW) Falling back to old probe method for modesetting
[ 89.206] No devices to configure. Configuration failed.
[ 89.206] (EE) Server terminated with error (2). Closing log file.
The directory /dev/dri is missing on my phone. Although libdrm2 is installed
Any ideas how to overcome this problem?
Mqhash said:
Hi
I'm trying to run pidgin in ubuntu touch which is installed on Nexus 5.
I did try to run it in libertine container, however it fails with the follwoing error.
Code:
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
(EE)
Fatal server error:
(EE) Failed to connect to Mir: Failed to connect: not accepted by server
(EE)
I have also tried to run it without the container using the following desktop file
Code:
[Desktop Entry]
Name=Pidgin Internet Messenger
GenericName=Internet Messenger
Comment=Chat over IM. Supports AIM, Google Talk, Jabber/XMPP, MSN, Yahoo and more
Exec=pidgin
Icon=pidgin
StartupNotify=true
Terminal=false
Type=Application
Categories=Network;InstantMessaging;
X-MessagingMenu-UsesChatSection=true
X-Ubuntu-Touch=true
X-Ubuntu-Gettext-Domain=pidgin
X-Ubuntu-XMir-Enable=true
To run pidgin I am using the following script, launching it from phone's command line
Code:
#!/bin/bash
DISP=:1
Xmir :1 -mirSocket /var/run/mir_socket --desktop_file_hint=/home/phablet/pidgin.desktop -debug &
sleep 0.5;
DISPLAY=:1 pidgin &
However, Xmir failed with the following error.
Code:
ARM architecture: Defaulting to software mode because glamor is not stable
XMir initialized with 2 visuals:
Visual id 0x28: ff ff00 ff0000, 24 planes
Visual id 0x29: ff ff00 ff0000, 24 planes
Realize ROOT window 0xb8a6d530 id=0xea "": 1080x1920 +0+0 parent=(nil)
depth=24 redir=0 type=0 class=1 visibility=3 viewable=1
override=0 _NET_WM_WINDOW_TYPE=0()
WM_TRANSIENT_FOR=(nil)
WM_HINTS=<none>
Aborted
I checked that unity is running, and the resullt of "ps aux | grep unity" was
Code:
unity-system-compositor --disable-overlays=false --spinner=/usr/bin/unity-system-compositor-spinner --file /run/mir_socket --from-dm-fd 10 --to-dm-fd 13 --vt 1
I also checked that mir_socket is created and reachable under /var/run and /run directories
There are no errors in lightdm file
But Xorg log file shows the following error
Code:
[ 89.205] (II) No BusID or DriverName specified - opening /dev/dri/card0
directory
[ 89.205] (WW) Falling back to old probe method for fbdev
[ 89.205] (WW) Falling back to old probe method for modesetting
[ 89.206] No devices to configure. Configuration failed.
[ 89.206] (EE) Server terminated with error (2). Closing log file.
The directory /dev/dri is missing on my phone. Although libdrm2 is installed
Any ideas how to overcome this problem?
Click to expand...
Click to collapse
Unfortunately, the only real good method of running X11 applications on Ubuntu Touch is via Libertine. That's odd that it won't connect to Mir. /dev/dri should indeed be missing from your phone, most phones do not expose DRM/DRI to the OS as they don't always have native support for it (for example, Qualcomm devices require the msm_kgsl_drm kernel module, however that module doesn't compile properly on newer kernels.)
On Android devices, an abstraction layer known as Libhybris is used for handling graphics and hardware by wrapping the native Android drivers and using them.
The only thing I could suggest is possibly creating a new empty libertine container and install only pidgin on it to see if it could possibly be an issue with your container, last time I used Ubuntu Touch, Pidgin worked out of the box in Libertine.
Thank you for your reply
ShadowEO said:
The only thing I could suggest is possibly creating a new empty libertine container and install only pidgin on it to see if it could possibly be an issue with your container.
Click to expand...
Click to collapse
Unfortunately, I did try to create a new container but same error. No change . I even tried to run firefox but same error
ShadowEO said:
last time I used Ubuntu Touch, Pidgin worked out of the box in Libertine.
Click to expand...
Click to collapse
What phone were you running ubuntu touch on?
Mqhash said:
Hi
I'm trying to run pidgin in ubuntu touch which is installed on Nexus 5.
I did try to run it in libertine container, however it fails with the follwoing error.
Code:
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
(EE)
Fatal server error:
(EE) Failed to connect to Mir: Failed to connect: not accepted by server
(EE)
Click to expand...
Click to collapse
How exactly did you get to this point? Which UT image? Was libertine included? The scope? The app? Did you install parts of it via apt? How did you run it? Where/how do you read the error?
I have also tried to run it without the container using the following desktop file
Click to expand...
Click to collapse
When you say without the container what exactly do you mean? If you only make the desktop file yourself, then there still is only one pidgin executable and that is the one in the container, right ... I don't know how to connect the two.
Code:
[Desktop Entry]
Name=Pidgin Internet Messenger
GenericName=Internet Messenger
Comment=Chat over IM. Supports AIM, Google Talk, Jabber/XMPP, MSN, Yahoo and more
Exec=pidgin
Icon=pidgin
StartupNotify=true
Terminal=false
Type=Application
Categories=Network;InstantMessaging;
X-MessagingMenu-UsesChatSection=true
X-Ubuntu-Touch=true
X-Ubuntu-Gettext-Domain=pidgin
X-Ubuntu-XMir-Enable=true
To run pidgin I am using the following script, launching it from phone's command line
Code:
#!/bin/bash
DISP=:1
Xmir :1 -mirSocket /var/run/mir_socket --desktop_file_hint=/home/phablet/pidgin.desktop -debug &
sleep 0.5;
DISPLAY=:1 pidgin &
However, Xmir failed with the following error.
Code:
ARM architecture: Defaulting to software mode because glamor is not stable
XMir initialized with 2 visuals:
Visual id 0x28: ff ff00 ff0000, 24 planes
Visual id 0x29: ff ff00 ff0000, 24 planes
Realize ROOT window 0xb8a6d530 id=0xea "": 1080x1920 +0+0 parent=(nil)
depth=24 redir=0 type=0 class=1 visibility=3 viewable=1
override=0 _NET_WM_WINDOW_TYPE=0()
WM_TRANSIENT_FOR=(nil)
WM_HINTS=<none>
Aborted
Click to expand...
Click to collapse
So, firstly, I think libertine should work, so I'd focus on that first. Secondly, if you want to explore an alternative route, I had things working in the past with:
* install via apt
* write a shell script like yours (search the internet for that desktop_file_hint, it seems to have some magical hidden meaning, you do not want to set it to pidgin, but I think to some uhm, whatdidtheycallit, "unconfined" app I think)
* write a desktop file and point it to shell script, and launch it by tapping on the display

lighttpd for android

Hello guys!
I want to create my own web server (like Palapa Web Server, or HTTP Server powered by Apache), but I will use lighttpd. I got the sources, compiled it for arm. My problem is that:
2019-03-04 21:58:13.203 9236-9236/package.webify E/Webify: java.io.IOException: Cannot run program "lighttpd" (in directory "/data/user/0/package.webify/files/sbin"): error=13, Permission denied
My application downloads a ZIP file on my website, and it extracts it to getFilesDir() (/data/user/0/package.webify/files), and I try to run lighttpd, but it gives me "Permission denied".
What can I do to run the command? It should be a way, otherwise Palapa Web Server and the other apps that does the same thing wouldn't work either.

Categories

Resources