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 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 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 }

如何将图像导入 CorelDRAW?▷➡️
温迪/幻想真境剧诗