アプリに GCM (Google Cloud Messaging) を実装しています。
Googleチュートリアルのようにすべて設定しましたが、これまでのところ機能しています。
が呼び出されたonMessage
ときに、通知バーに通知を表示します。GCMIntentService
これで、アプリがフォアグラウンドにあるかどうかを通知するメソッドができました。アプリがバックグラウンドにある場合、問題なくバーに通知が表示されます。
しかし、どうすればユーザーにダイアログを表示できますか?
私が電話するとき:
AlertDialog.Builder builder = new AlertDialog.Builder(context);
context は から与えられたコンテキストonMessage()
です。もちろん、このエラー:
_Notification.showPopUp() エラー: android.view.WindowManager$BadTokenException: ウィンドウを追加できません -- トークン null はアプリケーション用ではありません
そのため、コンテキストを に置き換えようとしましたMainActivity.this
。この目的のために、静的変数に保存しました。しかし、今それを実行すると、何も起こらず、エラーもダイアログも表示されません。
ダイアログの私のコード:
private static AlertDialog.Builder myAlertDialog;
private static void showPopUp(Context context,String kind, String resource_name, Integer resource_id)
{
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("Are you sure you want to exit?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
Log.e("TEST","alert.show()");
}
最後のログ: alert.show() が logcat に表示されますが、エラーはありません。
仕様: デバイス (Galaxy S2) Android 4.0.3 で動作
誰かが私のコードの何が問題なのか教えてもらえますか、または誰かが回避策を知っていますか?
編集:
私が保存する部分MainActivity.this
:
private static Context context_forshowingPopUp = null;
onCreate
//Set the context for showing a popup View
_Notification.setContext_forshowingPopUp(this);
AlertDialog.Builder builder = new AlertDialog.Builder(getContext_forshowingPopUp());
public static Context getContext_forshowingPopUp()
{
return context_forshowingPopUp;
}
public static void setContext_forshowingPopUp(Context context_forshowingPopUp)
{
_Notification.context_forshowingPopUp = context_forshowingPopUp;
}