我想单独取消我的应用程序,但它会在SerialVersionUID上抛出NullPointerException 不知道这里有什么问题?
public void UnInstallApplication() throws NameNotFoundException
{
Intent intent = new Intent(Intent.ACTION_DELETE, Uri.fromParts("package",
getPackageManager().getPackageInfo("com.XXX.XXX", 0).packageName,null));
startActivity(intent);
}
或者我在下面使用过这一行(在函数中插入了packagename)但结果相同!
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE);
uninstallIntent.setData(Uri.parse("package:" + packagename));
startActivity(uninstallIntent);
答案 0 :(得分:3)
使用此代码:
Uri packageURI = Uri.parse("package:your.packge.name");
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);
startActivity(uninstallIntent);
答案 1 :(得分:0)
第三方应用无法以编程方式安装或卸载任何其他软件包,这对Android来说是一个安全风险。但是,第三方应用可以要求Android操作系统使用意图安装或卸载软件包,这个问题应提供更完整的信息:
install / uninstall APKs programmatically (PackageManager vs Intents)
答案 2 :(得分:0)
我的错误是我在一个函数上调用我的卸载方法,该函数在一个扩展AsyncTask的类中的doinbackground上运行,所以我改变了我的调用方法,它促使我卸载了我的应用程序。
答案 3 :(得分:0)
#1答案非常接近正确答案。
这些代码经过我最近的应用验证:
int REQUEST_UNINSTALL = 1;
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_UNINSTALL) {
// 0 means success, other means failed.
Log.d(TAG, "got result of uninstall: " + resultCode);
}
}
void uninstallPackage() {
Uri packageURI = Uri.parse("package:" + "com.android.xxxx");
Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageURI);
startActivityForResult(uninstallIntent, REQUEST_UNINSTALL);
}
onActivityResult
将获得卸载结果,卸载包将提示系统对话框,询问用户是否删除了包。