Android采用pm命令静默卸载应用

Posted ken9527just

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android采用pm命令静默卸载应用相关的知识,希望对你有一定的参考价值。

卸载app的方式有多种,可以直接调用android系统的卸载程序,但是这样会调出android卸载提示框,问题就是真的不好看。

所以采用静默卸载的方式,避免弹出系统提示框。

方法一(调用系统卸载程序):

1 //卸载应用
2             Uri packageURI = Uri.parse("package:" + pkgName);
3             Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);
4             startActivity(uninstallIntent);

方法二(静默安装):

 1  /**
 2      * 卸载应用入口提示
 3      *
 4      * @param position app在列表中的位置
 5      * @param mData app列表
 6      */
 7     public void startUninstall(int position, List<AppInfoModel> mData) 
 8 
 9         //获取应用程序包名
10         String pkg = mData.get(position).packageName;
11         //判断此应用程序是否存在
12         Boolean pkgExist;
13         pkgExist = appExist(mContext,pkg);
14         if (!pkgExist) 
15             Toast.makeText(mContext, "程序未安装", Toast.LENGTH_SHORT).show();
16          else 
17             //静默卸载
18             Boolean uninstallSuccess = uninstall(pkg);
19             if (uninstallSuccess)
20                 Toast.makeText(mContext, "卸载成功", Toast.LENGTH_SHORT).show();
21              else 
22                 Toast.makeText(mContext, "卸载失败", Toast.LENGTH_SHORT).show();
23             
24         
25 
26     
27 
28 
29     /**
30      * 静默卸载App
31      *
32      * @param packageName 包名
33      * @return 是否卸载成功
34      */
35     private static boolean uninstall(String packageName) 
36         Process process = null;
37         BufferedReader successResult = null;
38         BufferedReader errorResult = null;
39         StringBuilder successMsg = new StringBuilder();
40         StringBuilder errorMsg = new StringBuilder();
41         try 
42             process = new ProcessBuilder("pm", "uninstall", packageName).start();
43             successResult = new BufferedReader(new InputStreamReader(process.getInputStream()));
44             errorResult = new BufferedReader(new InputStreamReader(process.getErrorStream()));
45             String s;
46             while ((s = successResult.readLine()) != null) 
47                 successMsg.append(s);
48             
49             while ((s = errorResult.readLine()) != null) 
50                 errorMsg.append(s);
51             
52          catch (Exception e) 
53             KLog.d("e = " + e.toString());
54          finally 
55             try 
56                 if (successResult != null) 
57                     successResult.close();
58                 
59                 if (errorResult != null) 
60                     errorResult.close();
61                 
62              catch (Exception e) 
63                 KLog.d("Exception : " + e.toString());
64             
65             if (process != null) 
66                 process.destroy();
67             
68         
69         //如果含有"success"单词则认为卸载成功
70         return successMsg.toString().equalsIgnoreCase("success");
71     
72 
73     /**
74      * 判断应用是否存在
75      *
76      * @param context       上下文
77      * @param packageName   包名
78      * @return  是否存在
79      */
80     private boolean appExist(Context context, String packageName) 
81         try 
82             List<PackageInfo> packageInfoList = context.getPackageManager().getInstalledPackages(0);
83             for (PackageInfo packageInfo : packageInfoList) 
84                 if (packageInfo.packageName.equalsIgnoreCase(packageName)) 
85                     return true;
86                 
87             
88          catch (Exception e) 
89             KLog.d(e.toString());
90         
91         return false;
92     

 

以上是关于Android采用pm命令静默卸载应用的主要内容,如果未能解决你的问题,请参考以下文章

Android静默安装和静默卸载代码

Android静默安装与静默卸载(系统应用)

Android 静默安装(自动安装)和静默卸载的实现方法

Android 静默安装(自动安装)和静默卸载的实现方法

android 中linux 命令pm常见用法(安装卸载app)

Installshield静默卸载在命令行中不起作用