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するには、最初にユーザーまたは別のアプリケーションによって明示的に開始する必要があります (詳細については、Google アプリケーションの停止状態)。

基本的に、必要な機能を実現するには、次のことを行う必要があります。

  1. ダイアログを表示する透明なアクティビティを作成します。
  2. アクティビティBroadcastReceiverを受信して​​開始する作成。ACTION_BOOT_COMPLETED
  3. マニフェストにブロードキャスト レシーバーを登録し、適切な権限を取得します。

また、この質問は、透過的なアクティビティを作成する方法に関する詳細情報を提供します。

于 2012-10-27T05:53:36.800 に答える