警报对话框在广播接收器中不起作用

时间:2013-12-24 12:35:41

标签: android broadcastreceiver android-broadcast

我正在使用Broad Cast Receiver for Alarm Manager发送消息  到设备。为此,我写了Broad Cast Receiver Class。和  我还想在Receive方法中显示Alert Dialog。为此,广播接收器如下。我在Broad Cast Receiver中包含了Alert Dialog。

public class AlarmReciever extends BroadcastReceiver
{
         @Override
            public void onReceive(Context context, Intent intent)
            {


                    String phoneNumberReciver="5556";
                    String message="Happy Birthday My dear Friend";
                    SmsManager sms = SmsManager.getDefault(); 
                    sms.sendTextMessage(phoneNumberReciver, null, message, null, null);
                    Toast.makeText(context, "Alarm fired and SMS Sent", Toast.LENGTH_LONG).show();


                    AlertDialog.Builder builder1 = new AlertDialog.Builder(context);
                    builder1.setMessage("message delivered");
                    builder1.setCancelable(true);
                    builder1.setPositiveButton("Yes",
                            new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                        }
                    });
                    builder1.setNegativeButton("No",
                            new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                        }
                    });

                    AlertDialog alert11 = builder1.create();
                    alert11.show();


             }

}
  

我正在调用广播接收者来自活动

Long time = new GregorianCalendar().getTimeInMillis()+00*00*03*1000;
Intent intentAlarm = new Intent(this, AlarmReciever.class);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP,time, PendingIntent.getBroadcast(this,1,  intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT));
  

我在alert1.show()行

中收到Broad cast接收器类中的错误

2 个答案:

答案 0 :(得分:0)

您需要Activity上下文才能显示AlertDialog,因此我认为无法在BroadcastReceiver中显示该内容。

答案 1 :(得分:0)

enter image description here

以这种方式创建活动:

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Message")
           .setTitle("Title")
           .setCancelable(false)
           .setPositiveButton("OK", new DialogInterface.OnClickListener()
           {
               public void onClick(DialogInterface dialog, int id) 
               {
                   MainActivity.this.finish();
               }
           });


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

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}}
  

创建主题:

<resources>
        <style name="Theme.Transparent" parent="android:Theme">
            <item name="android:windowIsTranslucent">true</item>
            <item name="android:windowBackground">@android:color/transparent</item>
            <item name="android:windowContentOverlay">@null</item>
            <item name="android:windowNoTitle">true</item>
            <item name="android:windowIsFloating">true</item>
            <item name="android:backgroundDimEnabled">false</item>
          </style> 
</resources>
  

在清单文件中设置此主题:

<activity
        android:name=".MainActivity"
        android:theme="@style/Theme.Transparent"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
  

从BroadCastReceiver类中调用此MainActivity类

相关问题