美好的一天,在广播接收机中,系统重新启动后,我试图显示一个警报对话框。我已经在清单中添加了接收者并调用了所需的权限,但是在显示对话框时出现错误。请问我该如何正确实施呢?我的代码:public void onReceive(final Context context, Intent intent) { Log.d(TAG, "received boot completed broadcast receiver... starting settings"); String settings = context.getResources().getString(R.string.restart_setting); String yes = context.getResources().getString(R.string.Settings); String no = context.getResources().getString(R.string.Cancel); final AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setMessage(settings) .setCancelable(false) .setPositiveButton(yes, new DialogInterface.OnClickListener() { public void onClick(@SuppressWarnings("unused") final DialogInterface dialog, @SuppressWarnings("unused") final int id) Intent config = new Intent(context, WeatherConfigure.class) context.startActivity(config); } }) .setNegativeButton(no, new DialogInterface.OnClickListener() { public void onClick(final DialogInterface dialog, @SuppressWarnings("unused") final int id) { dialog.cancel(); } }); final AlertDialog alert = builder.create(); alert.show(); }正在收到此日志错误:01-07 01:42:01.559: ERROR/AndroidRuntime(2004): Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application01-07 01:42:01.559: ERROR/AndroidRuntime(2004): at android.view.ViewRoot.setView(ViewRoot.java:548)01-07 01:42:01.559: ERROR/AndroidRuntime(2004):at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)01-07 01:42:01.559: ERROR/AndroidRuntime(2004): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)01-07 01:42:01.559: ERROR/AndroidRuntime(2004):at android.app.Dialog.show(Dialog.java:288)01-07 01:42:01.559: ERROR/AndroidRuntime(2004):at com.MuaaApps.MyWeatherUpdate.myWeatherBroadcastReceiver.onReceive(MyWeatherBroadcastReceiver.java:59)
3 回答
三国纷争
TA贡献1804条经验 获得超7个赞
您可以从此处获取源代码。
您不能直接从广播接收器显示对话框。您必须使用Activity
。另外,为了接收ACTION_BOOT_COMPLETED
您的活动,必须首先由用户或其他应用程序显式启动(有关更多信息,Google应用程序处于停止状态)。
基本上,要实现所需的功能,您需要执行以下操作:
创建显示对话框的透明活动。
创建
BroadcastReceiver
将接收ACTION_BOOT_COMPLETED
并开始您的活动。在清单中注册您的广播接收器并获得适当的许可。
此外,此问题提供有关如何创建透明活动的更多信息。
- 3 回答
- 0 关注
- 430 浏览
添加回答
举报
0/150
提交
取消