检查包名是否存在
private boolean checkPackage(String packageName) {
if(null == packageName || "".equals(packageName)) {
return false;
}
try {
getPackageManager().getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES);
return true;
} catch (NameNotFoundException e) {
return false;
}
}
弹出Dialog跳转卸载界面
private void checkApk() {
final String oldName = "com.example.xxx";
if(this.checkPackage(oldName)) {
Builder builder = new AlertDialog.Builder(this);
builder.setTitle(getResources().getString(R.string.dialog_title));
builder.setMessage(getResources().getString(R.string.dialog_delete_msg));
builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Uri uri=Uri.parse("package:"+ oldName);
Intent intent=new Intent(Intent.ACTION_DELETE,uri);
startActivity(intent);
checkDialog = null;
}
});
builder.setCancelable(false);
builder.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
return true;
}
});
if(null == checkDialog) {
checkDialog = builder.create();
checkDialog.show();
}
}
}
上面把dialog置null是因为不是单例 每次返回主界面再回到程序都会重新启动一个dialog,有什么好方法可以提出来
跳转核心代码
Uri uri=Uri.parse("package:"+ oldName);
Intent intent=new Intent(Intent.ACTION_DELETE,uri);