【问题标题】:Error executing command: permission denied执行命令时出错:权限被拒绝
【发布时间】:2018-07-03 05:23:07
【问题描述】:

我有一个名为 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"/>

并且该应用已授予写入权限。

【问题讨论】:

  • 找到解决方案了吗?

标签: android process permissions


【解决方案1】:

如果权限被拒绝,您需要 exec() 的 root 访问权限。请改用 NetworkCapabilities。

【讨论】:

    【解决方案2】:

    如果您的目的是测量网络速度,您可以使用 Connectivity Manager 轻松完成。

        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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-26
      • 1970-01-01
      相关资源
      最近更新 更多