3

アンインストールをクリックしたときにアプリをアンインストールするインテントを使用するフラグメントがあります。

View.OnClickListener removeButtonClick = new View.OnClickListener() {

    @Override
    public void onClick(View paramView) {
        PackageManager pm = ContextProvider.getContext().getPackageManager();
        Intent intent = new Intent(Intent.ACTION_DELETE, Uri.fromParts("package",
                    app.packageName, null));
        int result = 0;
        startActivityForResult(intent, result);
    }
};

アクティビティが正常に終了すると、次の呼び出しが行われます。

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    new MainActivity.UpdateDatabase().execute(); // update database
    ContextProvider.getContext().getFragmentManager().popBackStack(); // go back
} 

ただし、requestCode と resultCode は 0 であり、ユーザーがアンインストールまたはキャンセルを押したかどうかに関係なく、データは null です。彼らが何を選んだかを知るにはどうすればよいですか?

これは私がやったことです:

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
        Boolean found = false;
        PackageManager pm = ContextProvider.getContext().getPackageManager();
        List<PackageInfo> packages = pm.getInstalledPackages(0);
        for (PackageInfo pi : packages) {
            if (pi.packageName.equals(app.packageName)) {
                found = true;
                break;
            }
        }
        if (!found) { // User uninstalled app so update database and go back
            new MainActivity.UpdateDatabase().execute();                                    
            goBack();
        }

    } 
4

1 に答える 1

2

その方法はわかりませんが、パッケージマネージャーを使用して、パッケージがまだ存在するかどうかを確認できますか?

于 2012-12-08T01:34:14.140 に答える