考慮以下代碼片段,提示用戶評級市場上的應用:無法啓動的市場活動與CLEAR_TOP標誌
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();
}
這樣做是檢測按下(速率或更高版本)什麼按鈕,設置一個相應地標記並在需要時運行市場應用程序。無論按下哪個按鈕,我都想回到主菜單(這是一項遊戲活動,遠離主菜單活動的一項活動)。
在Android 4.1上,這個工作正常 - 市場打開應用程序的頁面,並從市場返回,我在主菜單上。在Android < = 2.3,市場不開放,我只是直接返回到主菜單。但是,如果我在backToMainActivity
方法中評論i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
,則會打開。這會導致其他問題,例如後退按鈕會返回到錯誤的活動狀態,而不是退出應用程序,所以不是解決方案。
如何運行市場,返回主菜單並讓主菜單活動位於活動堆棧頂部?
注意:我還沒有嘗試過,但刪除finish
也不是一個真正的選擇。我的遊戲活動也可以直接由外部應用程序啓動,在這種情況下,如果我刪除finish
呼叫,出於某種原因CLEAR_TOP
將不起作用,並且按主菜單活動上的後退按鈕將返回到遊戲活動,而不是退出應用程序。
不幸的是:它回到主菜單,但市場並未打開。 2.1:'09-13 20:04:19.983:WARN/ActivityManager(2233):HistoryRecord的重複結束請求{47eba9f0 my.app.package/.GameActivity}' – IVlad
remove'mActivity.finish ();'from'backToMainActivity();' –
我在OP的最後解釋了爲什麼我不能這麼做。這不是一種選擇,除非當遊戲活動直接從外部應用程序啓動時,您可以建議替代「CLEAR_TOP」。 – IVlad