簡體   English   中英

如何使用 PackageInstaller 以編程方式卸載 android 中的應用程序

[英]How to uninstall apps in android programmatically with PackageInstaller

我創建了一個簡單的 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,但我找不到任何關於如何實現的好例子。 感謝任何幫助。

你可以參考這個鏈接

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM