0

アプリケーションの外部でアラートダイアログを作成したい。

AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setTitle(Config_ConstantVariable.latest);
    builder.setMessage(title);
    builder.setIcon(R.drawable.push_logo);
    builder.setCancelable(false)
            .setPositiveButton(Config_ConstantVariable.alertbtnyes,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            Intent intent = new Intent(context,
                                    Main_ParticularNewsDetail.class);
                            Bundle bundle = new Bundle();
                            intent.putExtra("newsid", payload);
                            intent.putExtras(bundle);
                            context.startActivity(intent);
                        }
                    })
            .setNegativeButton(Config_ConstantVariable.alertbtnno,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                        }
                    });
    AlertDialog alert = builder.create();
    alert.show();

ただし、contextはアクティビティではなく、このクラスはextends BroadcastReceiverです。

通知をプッシュすると、エラーが発生しました。

06-18 18:38:08.629: E/AndroidRuntime(2402): Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

サムスンギャラクシータブでアプリケーションの外にダイアログをポップアウトできるWhatsAppを見ました。

4

1 に答える 1

7

以下のようなポップアップメッセージとして1つのアクティビティを使用したアプリで同じ機能を使用しています

 @Override
public void onReceive(Context context, Intent intent) {


    try {
         Bundle bundle = intent.getExtras();
         String message = bundle.getString("alarm_message");

         Intent newIntent = new Intent(context, PopupActivity.class);
         newIntent.putExtra("alarm_message", message);
         newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
         context.startActivity(newIntent);
        } catch (Exception e) { 
         e.printStackTrace();

        }
}

ポップアップアクティビティで、ダイアログボックスのようなUIを設計し、これをAndroidManifest.xmlに追加します

 <activity android:name=".PopupActivity"
             android:theme="@android:style/Theme.Dialog"
             android:label="@string/label"
             ></activity>

あなたはあなたの仕様に基づいてUIをカスタマイズすることができます。それは私にとって完璧に機能しています。お役に立てば幸いです。

于 2012-06-18T11:11:34.707 に答える