• Android笔记--卸载


             这一节主要简单总结一下Android里面常见的卸载方式,如下:

    方式1:

    1. private void executeUnInstall(String packageName) {
    2. try {
    3. Intent intent = new Intent(this, this.getClass());
    4. PendingIntent sender = PendingIntent.getActivity(this, 0, intent, 0);
    5. PackageInstaller mPackageInstaller = getPackageManager().getPackageInstaller();
    6. mPackageInstaller.uninstall(packageName, sender.getIntentSender());
    7. } catch (Exception e) {
    8. e.printStackTrace();
    9. }
    10. }

    方式2:

    1. private void executeUnInstall(String packageName) {
    2. try {
    3. PackageDeleteObserver deleteObserver = new PackageDeleteObserver();
    4. PackageManager pm = this.getPackageManager();
    5. Class[] unInstallTypes = new Class[] {String.class, IPackageDeleteObserver.class, int.class};
    6. Method unInstallMethod = pm.getClass().getMethod("deletePackage", unInstallTypes);
    7. unInstallMethod.invoke(pm, new Object[] {packageName, deleteObserver, 0});
    8. } catch (Exception e) {
    9. e.printStackTrace();
    10. }
    11. }
    12. class PackageDeleteObserver extends IPackageDeleteObserver.Stub {
    13. public void packageDeleted(String packageName, int returnCode) throws RemoteException {
    14. LogUtils.i(" -- packageDeleted --->packageName:" + packageName);
    15. }
    16. }
    17. private void registerUnInstallReceiver() {
    18. unInstallBroadCastReceiver = new UnInstallBroadCastReceiver();
    19. IntentFilter intentFilter = new IntentFilter();
    20. intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
    21. intentFilter.addDataScheme("package");
    22. registerReceiver(unInstallBroadCastReceiver,intentFilter);
    23. }
    24. public class UnInstallBroadCastReceiver extends BroadcastReceiver {
    25. @Override
    26. public void onReceive(Context context, Intent intent) {
    27. if(intent.getAction() == Intent.ACTION_PACKAGE_REMOVED) {
    28. }
    29. }
    30. }
    1. 单独建立一个文件:
    2. 包名:
    3. package android.content.pm;
    4. public interface IPackageDeleteObserver extends android.os.IInterface {
    5. public abstract static class Stub extends android.os.Binder implements android.content.pm.IPackageDeleteObserver {
    6. public Stub() {
    7. throw new RuntimeException("Stub!");
    8. }
    9. public static android.content.pm.IPackageDeleteObserver asInterface(android.os.IBinder obj) {
    10. throw new RuntimeException("Stub!");
    11. }
    12. public android.os.IBinder asBinder() {
    13. throw new RuntimeException("Stub!");
    14. }
    15. public boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply, int flags)
    16. throws android.os.RemoteException {
    17. throw new RuntimeException("Stub!");
    18. }
    19. }
    20. public abstract void packageDeleted(java.lang.String packageName, int returnCode)
    21. throws android.os.RemoteException;
    22. }

    方式3:

    1. public static void uninstallByShell(String pkgName) {
    2. try {
    3. // adb shell pm uninstall com.xxx.xxx
    4. Runtime.getRuntime().exec("pm uninstall " + pkgName);
    5. } catch (IOException e) {
    6. e.printStackTrace();
    7. }
    8. }

    方式4:

    1. public static void uninstallByIntent(Context context, String pkgName) {
    2. Intent intent = new Intent(Intent.ACTION_DELETE);
    3. intent.setData(Uri.parse("package:" + pkgName));
    4. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    5. context.startActivity(intent);
    6. }

  • 相关阅读:
    阿里云+作业帮+小红书:论剑云原生时代的 SRE与智能运维
    IOday7
    软考复习(二):操作系统
    【附源码】计算机毕业设计JAVA宠物管理系统
    大数据Flink(七十三):SQL的滚动窗口(TUMBLE)
    LVS负载均衡(LVS简介、三种工作模式、十种调度算法)
    将C语言中的命名格式改为Java中的驼峰式命名
    Python入门(二十四)-文件操作2
    C++ Reference: Standard C++ Library reference: C Library: cstring
    application.xml参数配置两次问题
  • 原文地址:https://blog.csdn.net/ljt2724960661/article/details/127595672