0

コンテキストを渡すことにより、broadcastReceiver を介してメソッド (postMessage) を呼び出そうとしていますが、機能していません。

間違いは何ですか?私は多くのことを試しましたが、まだうまくいきません。

 public class AlarmReceiver extends BroadcastReceiver implements
            OnActivityResultListener {


        public void onReceive(Context context, Intent intent) {
            try {
         controler(context); 

            } catch (Exception e) {
                Toast.makeText(
                        context,
                        "There was an error somewhere",
                        Toast.LENGTH_SHORT).show();
                e.printStackTrace();
            }

        }

    public void controler(Context context) {
  String radioButtonName = MAinActivity.actionAlarmName(radioButtonName);

            if (radioButtonName.equals("1")) {
        //      TODO
            } else if (radioButtonName.equals("2")) {
    postMessage(context);
    }
    }

    public void postMessage(Context context) {

            DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    switch (which) {
                    case DialogInterface.BUTTON_POSITIVE:
                        // Yes button clicked

                        break;

                    case DialogInterface.BUTTON_NEGATIVE:
                        // No button clicked
                        break;
                    }
                }
            };
            AlertDialog.Builder builder = new AlertDialog.Builder(context);
            builder.setMessage("Are you sure?")
                    .setPositiveButton("Yes", dialogClickListener)
                    .setNegativeButton("No", dialogClickListener).show();
        }
4

4 に答える 4

2

Contextで受け取るのonReceive()BroadcastReceiver、そのアプリケーションコンテキストであるアクティビティコンテキストではありません。アプリケーションコンテキストでダイアログを表示することはできません。ダイアログは常にに関連付けられている必要がありActivityます。

于 2013-02-26T04:30:33.913 に答える
1

AndroidManifest にレシーバーを追加します

<receiver android:name=".AlarmReceiver" android:process=":remote" />
于 2013-02-26T03:44:33.623 に答える
1

Android の公式ドキュメントに記載されているように、受信時メソッドでダイアログを表示することはできません。

http://developer.android.com/reference/android/content/BroadcastReceiver.html#onReceive(android.content.Context,android.content.Intent)

ダイアログを表示したい場合でも、ダイアログ スタイルでアクティビティを開始する別の方法を使用するか、作成時のメソッドでアラート ダイアログを表示する透明なアクティビティを開始することができます。

お役に立てれば:

于 2013-02-26T06:23:52.557 に答える
1

アクティビティ コンテキストなしでレシーバーにダイアログを表示したい場合は、次のことができます。

dialog.getWindow.setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)

AndroidManifest.xml に許可を追加することを忘れないでください。

于 2013-02-26T04:46:43.520 に答える