在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下面是否也适用,还有待于测试。