Im建立一個基於PhoneGAP的應用程序,我需要撥打電話然後在5秒後返回到我的應用程序。通過電話撥打電話後重新集中主要活動
關於撥打電話的部分工作正常。爲了使Android與呼叫開放而不僅僅是撥號盤,這使得調用的代碼被放置在一個com.phonegap.api.Plugin,看起來像
private void callNumber(String phoneNumber){
Uri calling = Uri.parse("tel:" + phoneNumber);
Intent callIntent = new Intent(Intent.ACTION_CALL, calling);
this.ctx.startActivity(callIntent);
}
要重新啓動應用程序,即時通訊發動的AsyncTask
剛在進行名爲RestartTask的調用之前。由於此代碼位於插件中,因此我必須使用Activity.runOnUiThread
來啓動RestartTask,但除此之外沒有什麼特別的。
在RestartTask,只有doInBackground
方法的實現和所有它,在睡覺爲5秒鐘,然後運行以下意圖:
Intent restartIntent = new Intent(DialerPlugin.this.ctx.getBaseContext(), MainActivity.class);
restartIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
DialerPlugin.this.ctx.startActivity(restartIntent);
這裏MainActivity
是從PhoneGap的,它擴展了派生主類DroidGap
。
設置FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_SINGLE_TOP是人在說什麼here和here應設置,如果活動被「激活」,意思是其中活動正在實例化的任務使用,而不是創建新任務,並且該活動與其運行狀態重用,而不是創建新的活動實例。當意圖由操作系統交付時,「舊」活動被呼叫onNewIntent
。
但是,當電話變爲活動狀態時,沒有任何反應,並且看起來該意圖沒有傳送到MainActivity
,直到我掛斷其中一個電話。奇怪的。
如果我將標誌更改爲包含FLAG_ACTIVITY_CLEAR_TOP
,則重新啓動應用任務或主要活動。然而,因爲這是PhoneGAP,兩者都對應於重新啓動應用程序,這不是我想要的。我還可以讓Android啓動一個全新的應用程序在另一個任務,這是重點。
但是我不能讓Android返回焦點到我的主要活動。我究竟做錯了什麼?
謝謝!