2013-10-28 69 views
2

每當我收到推送通知,並且我的應用程序可見(onStart()/ onStop()對)時,我試圖從GCMIntentService類向用戶顯示一個對話框。 (我還沒仍保持切換到下一個GCM,其實我沒有,但我有問題,所以我切換回傳統之一)當我收到推送通知時無法創建對話框

protected void onMessage(Context context, Intent intent) 
{ 
    AlertDialog.Builder builder = new AlertDialog.Builder(context); //issue here 

builder.setMessage("You have a notification").setTitle("Notification"); 
builder.setPositiveButton("dismiss", 
new DialogInterface.OnClickListener() 
{ 
public void onClick(DialogInterface dialog, int id) 
{ 
Intent intent = new Intent(Intent.ACTION_MAIN); 
         intent.addCategory(Intent.CATEGORY_HOME); 
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
} 
}); 

AlertDialog dialog = builder.create(); 
dialog.show(); 
} 

我得到的錯誤是

機器人。 view.WindowManager $ BadTokenException:無法添加窗口 - 令牌null不是一個應用程序

我知道這是一個方面的錯誤,它是谷歌文檔等.. 書面錯了,但什麼方式給...每當我收到通知時如何進行對話?

+1

你需要先開始一個活動。 (但你的活動可以是一個對話框) – njzk2

+0

@ njzk2如果是這樣的話,我需要知道哪一個活動現在是開放的嗎?實際上,當通知到來時,隨機活動將打開,我希望對話框出現在那裏。 – tony9099

回答

1

而不是使用對話框,進行一項活動並將其主題設置爲Theme.dialog或其任何子項,然後從onMessage方法開始活動。

這樣你的活動就可以達到對話的目的,問題就會消失

+0

不錯的主意。讓我試試。 – tony9099

+1

我嘗試了方法,它工作正常,(你需要一個新的任務標誌的活動壽..我學會了這種困難的方式)...但是我的對話框主題活動正在充分的空間,,,雖然我只是有一個小小的按鈕...(父佈局的高度設置爲包裝內容) – tony9099

+0

是的..它佔用了大量的空間。我前段時間也在開發類似的應用程序..這是我發現 –