ユーザーに市場でのアプリの評価を促す次のコード スニペットを検討してください。
private void backToMainActivity() {
Intent i = new Intent(mActivity, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
mActivity.startActivity(i);
mActivity.finish();
}
...
if (mRateToast.leftClicked(x, y)) {
setRate(true);
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + GameGlobals.PACKAGE_NAME));
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET | Intent.FLAG_ACTIVITY_NEW_TASK);
mActivity.startActivity(i);
backToMainActivity();
} else if (mRateToast.rightClicked(x, y)) {
setRate(false);
backToMainActivity();
}
これが行うことは、押されたボタン (Rate または Later) を検出し、それに応じてフラグを設定し、必要に応じてマーケット アプリを実行することです。どのボタンを押しても、メイン メニューに戻りたい (これはゲーム アクティビティであり、メイン メニュー アクティビティから 1 つ離れたアクティビティです)。
Android 4.1 では、これは問題なく動作します。マーケットがアプリのページに開き、マーケットから戻ると、メイン メニューが表示されます。Android <= 2.3 では、マーケットが開かず、メイン メニューに直接戻ります。ただし、メソッドでコメントすると開きi.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
ますbackToMainActivity
。ただし、これにより、戻るボタンがアプリを終了する代わりに間違ったアクティビティに戻るなど、他の問題が発生するため、解決策ではありません.
マーケットを実行し、メイン メニューに戻り、メイン メニューのアクティビティをアクティビティ スタックの一番上に配置するにはどうすればよいですか?
注:試したことはありませんが、を削除することfinish
も実際にはオプションではありません。私のゲーム アクティビティは、外部アプリケーションから直接開始することもできます。その場合、finish
呼び出しを削除すると、何らかの理由でCLEAR_TOP
動作しなくなり、メイン メニュー アクティビティの [戻る] ボタンを押すと、終了する代わりにゲーム アクティビティに戻ります。応用。