我有一个名为iperf的可执行文件来测量网络速度。可执行文件是我以编程方式复制到我的应用程序文件目录的资产。之后,我以777
权限执行 chmod 命令,具有此可执行文件的权限,具有:
val processChmod = Runtime.getRuntime().exec("/system/bin/chmod 777
${getExternalFilesDir(null)}/iperf3")
processChmod.waitFor()
该命令以退出代码 0 完成。
然后,我调用这个可执行文件:
ProcessBuilder().command(command).redirectErrorStream(true).start()
我明白这个:
无法运行程序 "/storage/emulated/0/Android/data/my.packpage.name/files/iperf3": 错误 = 13,权限被拒绝
我不知道我该怎么做才能在我的应用程序文件文件夹中执行此命令。我在清单中也有写入权限:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
并且该应用程序已授予写入权限。
如果您打算测量网络速度,则可以使用连接管理器轻松完成。
ConnectivityManager cm = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
NetworkCapabilities nc = cm.getNetworkCapabilities(cm.getActiveNetwork());
int downSpeed = nc.getLinkDownstreamBandwidthKbps();
int upSpeed = nc.getLinkUpstreamBandwidthKbps();
如果权限被拒绝,则需要 exec(( 的 root 访问权限。请改用网络功能。