Мне нужно запустить некоторые команды в моем приложении, но некоторые из них не работают: команды удаления и ввода ввода.
Это команды, которые я пытался выполнить: - uninstall: pm uninstall -k - пользователь 0 com.mypackage - ввод ввода: ввод ввода xy
Эти 2 команды работают, когда я выполняю их на компьютере с помощью adb, но не всякий раз, когда они выполняются на самом устройстве.
Я попытался выполнить «pm list packages -f» на устройстве, и это сработало.
В основном это код, который я использую для выполнения команды:
try {
Process process = Runtime.getRuntime().exec(commandEditText.getText().toString());
InputStream iStream = process.getInputStream();
InputStream errorStream = process.getErrorStream();
tryWriteProcessOutput(iStream, resultString);
tryWriteProcessOutput(errorStream, resultString);
} catch (IOException e) {
e.printStackTrace();
}
КогдаЯ выполняю 2 команды, я получаю ту же ошибку:
Exception occurred while executing:
java.lang.NullPointerException
at com.android.internal.util.Preconditions.checkNotNull(Preconditions.java:111)
at com.android.server.AppOpsService.checkPackage(AppOpsService.java:1104)
at android.app.AppOpsManager.checkPackage(AppOpsManager.java:1866)
at com.android.server.pm.PackageInstallerService.uninstall(PackageInstallerService.java:982)
at com.android.server.pm.PackageManagerShellCommand.runUninstall(PackageManagerShellCommand.java:912)
at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:134)
at android.os.ShellCommand.exec(ShellCommand.java:96)
at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:28774)
at android.os.Binder.shellCommand(Binder.java:581)
at android.os.Binder.onTransact(Binder.java:481)
at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:3209)
at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:5107)
at android.os.Binder.execTransact(Binder.java:682)
Я полагаю, это проблема с разрешениями, но я не уверен. Я знаю, что, вероятно, не рекомендуется удалять подобные приложения или использовать сенсорный ввод, но есть ли способ сделать это?