【问题标题】:How to uninstall apps in android programmatically with PackageInstaller如何使用 PackageInstaller 以编程方式卸载 android 中的应用程序
【发布时间】:2019-06-29 12:04:31
【问题描述】:

我创建了一个简单的 android 卸载应用程序,可以帮助一次删除多个应用程序。我使用这段代码来完成这个任务:

Uri uri = Uri.fromParts("package", app.getPackageName(), null);
Intent intent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, uri);
// store result
intent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
startActivityForResult(intent, 1);

但是现在,根据android docACTION_UNINSTALL_PACKAGE 在 API 级别 29 中已弃用,建议改用 PackageInstaller.uninstall(String, IntentSender)。我想使用这个新的 api,但我找不到任何关于如何实现的好例子。 感谢任何帮助。

【问题讨论】:

    标签: android android-9.0-pie uninstallation


    【解决方案1】:

    你可以参考这个链接

    https://www.programcreek.com/java-api-examples/index.php?api=android.content.pm.PackageInstaller

    并像这样实现 -

    @Override
    public void uninstall(String packageName, String callerPackageName, int flags, IntentSender statusReceiver, int userId) throws RemoteException {
    boolean success = VAppManagerService.get().uninstallPackage(packageName);
    if (statusReceiver != null) {
        final Intent fillIn = new Intent();
        fillIn.putExtra(PackageInstaller.EXTRA_PACKAGE_NAME, packageName);
        fillIn.putExtra(PackageInstaller.EXTRA_STATUS, success ? PackageInstaller.STATUS_SUCCESS : PackageInstaller.STATUS_FAILURE);
        fillIn.putExtra(PackageInstaller.EXTRA_STATUS_MESSAGE, PackageHelper.deleteStatusToString(success));
        fillIn.putExtra("android.content.pm.extra.LEGACY_STATUS", success ? 1 : -1);
        try {
            statusReceiver.sendIntent(mContext, 0, fillIn, null, null);
        } catch (IntentSender.SendIntentException e) {
            e.printStackTrace();
        }
      }
    }
    

    【讨论】:

    • 当然。谢谢
    猜你喜欢
    • 2020-08-10
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 2011-04-24
    • 2011-10-12
    • 1970-01-01
    相关资源
    最近更新 更多