繁体   English   中英

如何在应用程序代码本身中使用 adb 命令卸载 android 应用程序?

[英]How to uninstall android app using adb commands in the app code itself?

我想要卸载一个应用程序而不弹出“你想卸载这个应用程序吗?” 对话。

我试过使用

try {
        Runtime.getRuntime().exec("pm uninstall --user 0 packageName")
    }catch (e : Exception){
        e.printStackTrace()        
    }

收到以下错误

Exception occurred while dumping:
    java.lang.NullPointerException
        at com.android.internal.util.Preconditions.checkNotNull(Preconditions.java:94)
        at com.android.server.AppOpsService.checkPackage(AppOpsService.java:974)
        at android.app.AppOpsManager.checkPackage(AppOpsManager.java:1656)
        at com.android.server.pm.PackageInstallerService.uninstall(PackageInstallerService.java:874)
        at com.android.server.pm.PackageManagerShellCommand.runUninstall(PackageManagerShellCommand.java:792)
        at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:118)
        at android.os.ShellCommand.exec(ShellCommand.java:94)
        at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:18695)
        at android.os.Binder.shellCommand(Binder.java:468)
        at android.os.Binder.onTransact(Binder.java:367)
        at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:2408)
        at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:3083)
        at android.os.Binder.execTransact(Binder.java:565)

注意:在 AndroidManifest 文件中添加了 INTERACT_ACROSS_USERS_FULL 权限,并且应用程序被签名为系统应用程序

这目前不适用于第三方应用程序。 请注意,即使使用反射或其他技巧来访问 installPackage() 也无济于事,因为只有系统应用程序才能使用它。 (这是因为它是低级安装机制,权限已经被用户批准后,所以普通应用程序访问是不安全的。)

此外 installPackage() function arguments 经常在平台版本之间发生变化,因此您尝试访问它的任何操作都会在平台的各种其他版本上失败。

但是,对于使用 ADB 命令行卸载应用程序,您可以使用

adb uninstall <package_name>

您可以将以下链接引用到另一个类似的线程。

以编程方式安装/卸载 APK(PackageManager 与 Intents)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM