android - 如何在Android Studio源代码中运行adb命令?

标签 android kotlin adb

        muteButton.setOnClickListener {
            Runtime.getRuntime().exec("adb shell settings put system csc_pref_camera_forced_shuttersound_key 0");
        }

这是我的代码,下面是日志消息。

    java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:502)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 
     Caused by: java.io.IOException: Cannot run program "adb": error=13, Permission denied
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1050)
        at java.lang.Runtime.exec(Runtime.java:698)
        at java.lang.Runtime.exec(Runtime.java:528)
        at java.lang.Runtime.exec(Runtime.java:425)
        at pakage_name.MainActivity.onCreate$lambda-0(MainActivity.kt:16)
        at pakage_name.MainActivity.$r8$lambda$ho6D_gaRxTXOpx0ACOxYNLNSY60(Unknown Source:0)

我认为

Caused by: java.io.IOException: Cannot run program "adb": error=13, Permission denied

是一个原因。我应该如何修改我的代码?

最佳答案

adb 命令是一个安装在您的 PC 上的程序,它会在 Android 设备中打开一个 shell。如果您使用 native 代码,则不需要(也不能)使用它 - 只需删除它并直接调用命令:
Runtime.getRuntime().exec("设置系统 csc_pref_camera_forced_shuttersound_key 0");

关于android - 如何在Android Studio源代码中运行adb命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69341553/

相关文章:

android - linux "adb push"命令问题, "No such file or directory"错误

android - 模拟器创建 adb.exe 副本

android - Recyclerview 在 Activity 或 fragment android 中使用按钮 Action 向上和向下按钮滚动

android - 应用程序被杀死后取消注册后如何注册广播接收器

android - 不同的操作栏适合不同的 Activity

android - Android + Kotlin 中的实验性 JUnit 支持不起作用

hibernate - micronaut 是否有一种方法可以让 "Spring Data JPA"存储库像 spring 一样从界面自动生成?

android - 在本地网络中推送通知

android - retrofit - 删除为空但响应主体类型被声明为非空

java - 如何在 java.lang.Runtime.getRuntime() 中编写 adb shell 命令?