Как удалить приложения в Android программно с помощью 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);

Но теперь, согласно этому андроид документ, ACTION_UNINSTALL_PACKAGE устарел на уровне API 29, и вместо него рекомендуется использовать PackageInstaller.uninstall(String, IntentSender). Я хочу использовать этот новый API, но не могу найти хорошего примера того, как это реализовано. Любая помощь приветствуется, спасибо.

0
0
2 366
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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();
    }
  }
}

Конечно. Спасибо

Anupam 29.06.2019 15:10

Другие вопросы по теме