アンインストールをクリックしたときにアプリをアンインストールするインテントを使用するフラグメントがあります。
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();
}
}