Unable to add window -- token null is not for an application

本文详细介绍了如何在Android应用中通过Intent、AlarmManager等组件设置闹钟,并在TimeReceive类中接收闹钟触发的广播。重点讨论了在广播接收者中无法直接使用弹出提示框的问题及解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   在MainActivity设置闹钟, 

Intent intent=new Intent(MainActivity.this,TimeReceive.class);
PendingIntent sender=PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
AlarmManager am=(AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC, calendar.getTimeInMillis(), sender);
String  time="你设置的闹钟是####"+hour+":"+minute;


   调用,TimeReceive类   

public class TimeReceive extends BroadcastReceiver{


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

AlertDialog.Builder  build=new Builder(mainActivity).
setTitle("闹钟提醒");

build.setIcon(R.drawable.ic_launcher);
build.setMessage("对不起 词库找不到相关解释" );
build.setPositiveButton("是" ,  null );
build.show();

}

错误提示

Unable to add window -- token null is not for an application

将 context进行强转后

MainActivity mainActivity=(MainActivity)context;

提示

android.app.ReceiverRestrictedContext cannot be cast to com.click369.alarmdemo.MainActivity

结论  广播接收者中不能使用弹出提示框






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值