1

我想自行卸载我的应用程序,但它在 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);
}

或者我在下面使用了这一行(在函数中插入了包名)但结果相同!

Intent uninstallIntent = new Intent(Intent.ACTION_DELETE);
    uninstallIntent.setData(Uri.parse("package:" + packagename));
    startActivity(uninstallIntent); 
4

4 回答 4

3

使用此代码:

Uri packageURI = Uri.parse("package:your.packge.name");
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);
startActivity(uninstallIntent);
于 2012-12-15T15:13:11.117 回答
0

第三方应用程序无法以编程方式安装或卸载任何其他软件包,这对 Android 来说是一个安全风险。但是,第 3 方应用程序可以要求 Android 操作系统使用意图安装或卸载包,这个问题应该提供更完整的信息:

以编程方式安装/卸载 APK(PackageManager 与 Intents)

于 2012-12-15T17:50:28.583 回答
0

我的错误是我在一个扩展 AsyncTask 的类中的 doinbackground 上运行的函数上调用了我的卸载方法,所以我更改了调用方法,它提示我卸载我的应用程序。

于 2012-12-16T05:17:51.667 回答
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获得卸载结果,卸载包将提示系统对话框询问用户是否删除包。

于 2013-09-02T09:49:28.867 回答