BOOT_COMPLETED后警告对话框中的空指针异常

时间:2012-10-26 07:35:02

标签: android broadcastreceiver alertdialog bootcompleted

我想在启动设备时显示警告对话框。广播接收器没有问题,它工作正常。但是当启动完成后,没有开放活动,因此我在这里得到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");
    }
}

请帮帮我。提前谢谢。

1 个答案:

答案 0 :(得分:3)

以下是关于如何操作的post。您可以从here获取源代码。

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

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

  1. 创建显示对话框的透明活动。
  2. 创建接收BroadcastReceiver的{​​{1}}并开始您的活动。
  3. 在清单中注册您的广播接收器并获得适当的许可。
  4. 此外,this问题提供了有关如何创建透明活动的更多信息。