我正在尝试使用 Runtime.getRuntime().exec 方法开发一个调用外部程序(用 C 编写)的应用程序。这个程序基本上是一个基于 gstreamer 的RTSP服务器,如果我从 Android 命令提示符运行,它运行良好。但是,当我从应用程序运行程序时,我收到以下错误。
绑定套接字失败(权限被拒绝)
我已经在我的 AndroidManifest.xml 文件中提供了网络访问权限。
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
我也试过这个:
String cmd = "ping localhost";
Runtime.getRuntime().exec(cmd);
我得到了:
ping: icmp open socket: 不允许操作
我还尝试从应用程序运行另一个程序(它在 Android 屏幕上显示图像 - surfaceflinger sink)。所以,我包含android.permission.ACCESS_SURFACE_FLINGER
在清单文件中。但是,它无法在surfaceflinger sink 上显示。
所以,我有一种感觉,这些权限并没有传递给这些外部程序。有没有办法做到这一点?我不想将这些基于 C 的程序转换为 Java。