Android 4.0下防止用户对安装程序进行卸载

在Android4.0下,如何防止用户对安装程序进行卸载,可以参照以下步骤。
打开安装源码目录,找到packages/apps/PackageInstaller/src/com/android/packageinstaller/下的两个文件:

1、UninstallAppProgress.Java //程序卸载过程

2、UninstallerActivity.java //程序卸载界面

方法是在UninstallerActivity.java对应位置加上一段代码即可:

@Override

public void onCreate(Bundle icicle) {

   super.onCreate(icicle);

   // Get intent information.

   // We expect an intent with URI of the formpackage://<packageName>#<className>

   // className is optional; if specified, it is the activity the userchose to uninstall

   final Intent intent = getIntent();

   Uri packageURI = intent.getData();

   String packageName = packageURI.getEncodedSchemeSpecificPart();

   if(packageName == null) {

       Log.e(TAG, "Invalid package name:" + packageName);

       showDialog(DLG_APP_NOT_FOUND);

       return;

   }

if(packageName.equals(“cn.android.managerapp”)){

      /*AlertDialog.Builder builder= new AlertDialog.Builder(this);

      //builder.setIcon(android.R.drawable.ic_dialog_info);

      builder.setTitle("Message");

      builder.setMessage("Cannot be uninstall!");

      builder.setPositiveButton("确认", null);

      //builder.create().show();

       builder.show();

        //showDialog(DLG_APP_NOT_FOUND);

       //return;

       finish();*/

       newAlertDialog.Builder(this)

       .setTitle("游戏控制")

       .setMessage("对不起,此程序不允许卸载!")

      .setPositiveButton("确定",

       newDialogInterface.OnClickListener(){

       public voidonClick(DialogInterface dialoginterface, int i){

          //这里设置点击后执行

          finish();

       }

       }

       )

       .show();         

          }

   mPm = getPackageManager();

    boolean errFlag = false;

加上红色部分的代码,就可以对特定的安装程序进行控制了。其中cn.android.managerapp是指安装程序的进程名,效果就是弹出提示框,提醒用户程序不允许卸载。

以上步骤可适用于Android 4.0下,对于Android 5.0下面是否也适用,还有待于测试。