我正在使用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接收器类中的错误
答案 0 :(得分:0)
您需要Activity
上下文才能显示AlertDialog
,因此我认为无法在BroadcastReceiver
中显示该内容。
答案 1 :(得分:0)
以这种方式创建活动:
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类