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

私の間違いは、 AsyncTask を拡張するクラス内の doinbackground で実行されている関数でアンインストール メソッドを呼び出していたため、呼び出しメソッドを変更し、アプリをアンインストールするように促したことです。

于 2012-12-16T05:17:51.667 に答える
0

一番の答えは正しい答えに非常に近いです。

これらのコードは、最近のアプリで検証されています。

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 に答える
0

サード パーティのアプリは、他のパッケージをプログラムでインストールまたはアンインストールできません。これは、Android のセキュリティ リスクになります。ただし、サードパーティのアプリは、インテントを使用して Android OS にパッケージのインストールまたはアンインストールを要求できます。この質問は、より完全な情報を提供する必要があります。

APK をプログラムでインストール/アンインストールする (PackageManager と Intents)

于 2012-12-15T17:50:28.583 に答える