3

我想在设备启动完成时显示一个警报对话框。广播接收器没有问题,它工作正常。但是当启动完成时,没有打开的活动,因此我到NullPointerException了这里。在这种情况下如何显示对话框?这是我用来显示对话框的代码:

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

        AlertDialog alertHelp;
        AlertDialog.Builder dialog = new AlertDialog.Builder(context);
        TextView m_timetext = new TextView(context );
        m_timetext.setText("hello");
        //  m_timetext.setTextColor(getResources().getColor(R.color.dark_green));

        LinearLayout linearLayout = new LinearLayout(context );
        linearLayout.setLayoutParams( new  LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,
                LinearLayout.LayoutParams.FILL_PARENT));
        linearLayout.setOrientation(1); 
        linearLayout.addView(m_timetext);

        dialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {

            }});

        dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {

            }});

        alertHelp = dialog.create();
        alertHelp.setView(linearLayout);
        alertHelp.show();       

        Log.d("In","Switched On");
    }
}

请帮我。提前致谢。

4

1 回答 1

3

这是一篇关于如何做到这一点的帖子。您可以从这里获取源代码。

您的代码不起作用,因为您无法直接从广播接收器显示对话框。你必须使用一个Activity. 此外,为了接收ACTION_BOOT_COMPLETED您的活动,必须首先由用户或其他应用程序明确启动(谷歌应用程序停止状态以获取更多信息)。

基本上,要实现所需的功能,您需要执行以下操作:

  1. 创建显示对话框的透明活动。
  2. 创建BroadcastReceiver接收ACTION_BOOT_COMPLETED并开始您的活动。
  3. 在清单中注册您的广播接收器并获得适当的权限。

此外,问题还提供了有关如何创建透明活动的更多信息。

于 2012-10-27T05:53:36.800 回答