执行命令时出错:权限被拒绝



我有一个名为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 访问权限。请改用网络功能。

最新更新