2011-02-10 4 views
0

Пытается создать всплывающее окно после завершения каждой загрузки, чтобы получить подтверждение. Возможность получить сообщение BOOT_COMPLETED, но при открытии Alertdialog его сбоя, Ниже приведены строки кода, которые я использую. Пожалуйста, предложитеPOPUP при загрузке завершен

public class BootReceiver extends BroadcastReceiver { 

    private static final String TAG = "BootReceiver"; 

    @Override 
    public void onReceive(Context context, Intent intent) 
     {    
      String action = intent.getAction();   
      Log.d(TAG, "BroadcastReceiver:" + action);   
      if (action.equals(Intent.ACTION_BOOT_COMPLETED)) 
      {    

       Log.d(TAG, "ACTION_BOOT_COMPLETETED Receved"); 
       CharSequence text = "BOOT COMPLETED!"; 
       int duration = Toast.LENGTH_SHORT; 
       Toast.makeText(context,text,Toast.LENGTH_SHORT).show(); 

       AlertDialog.Builder alertDialog = new AlertDialog.Builder(context); 
       alertDialog.setMessage("Message"); 
       alertDialog.setTitle("CONSENT"); 
       alertDialog.setIcon(android.R.drawable.ic_dialog_alert); 
       alertDialog.setCancelable(false); 
       alertDialog.setPositiveButton("AGREE", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        Log.d(TAG, " AGREE CLICKED" ); 

       } }); 
       alertDialog.setNegativeButton("DISAGREE", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         Log.d(TAG, " DISAGREE CLICKED" ); 

        } }); 
       alertDialog.show(); 

      }   
     }  
    } 

Назад трассировку:

I/ActivityManager( 109): Start proc com.android.mms for broadcast com.android.m 
ms/.transaction.MmsSystemEventReceiver: pid=311 uid=10015 gids={3003, 1015} 
E/AndroidRuntime( 246): FATAL EXCEPTION: main 
E/AndroidRuntime( 246): java.lang.RuntimeException: Unable to start receiver co 
m.android.settings.BootReceiver: android.view.WindowManager$BadTokenExceptio 
n: Unable to add window -- token null is not for an application 
E/AndroidRuntime( 246):  at android.app.ActivityThread.handleReceiver(Act 
ivityThread.java:1862) 
E/AndroidRuntime( 246):  at android.app.ActivityThread.access$2400(Activi 
tyThread.java:124) 
E/AndroidRuntime( 246):  at android.app.ActivityThread$H.handleMessage(Ac 
tivityThread.java:1035) 
E/AndroidRuntime( 246):  at android.os.Handler.dispatchMessage(Handler.ja 
va:99) 
E/AndroidRuntime( 246):  at android.os.Looper.loop(Looper.java:126) 
E/AndroidRuntime( 246):  at android.app.ActivityThread.main(ActivityThrea 
d.java:3897) 
E/AndroidRuntime( 246):  at java.lang.reflect.Method.invokeNative(Native 
Method) 
E/AndroidRuntime( 246):  at java.lang.reflect.Method.invoke(Method.java:4 
91) 
E/AndroidRuntime( 246):  at com.android.internal.os.ZygoteInit$MethodAndA 
rgsCaller.run(ZygoteInit.java:841) 
E/AndroidRuntime( 246):  at com.android.internal.os.ZygoteInit.main(Zygot 
eInit.java:599) 
E/AndroidRuntime( 246):  at dalvik.system.NativeStart.main(Native Method) 

E/AndroidRuntime( 246): Caused by: android.view.WindowManager$BadTokenException 
: Unable to add window -- token null is not for an application 
E/AndroidRuntime( 246):  at android.view.ViewRoot.setView(ViewRoot.java:4 
34) 
E/AndroidRuntime( 246):  at android.view.WindowManagerImpl.addView(Window 
ManagerImpl.java:181) 
E/AndroidRuntime( 246):  at android.view.WindowManagerImpl.addView(Window 
ManagerImpl.java:95) 
E/AndroidRuntime( 246):  at android.app.Dialog.show(Dialog.java:269) 
E/AndroidRuntime( 246):  at android.app.AlertDialog$Builder.show(AlertDia 
log.java:853) 
E/AndroidRuntime( 246):  at com.android.settings.BootReceiver.onRecei 
ve(XtraBootReceiver.java:53) 
E/AndroidRuntime( 246):  at android.app.ActivityThread.handleReceiver(Act 
ivityThread.java:1855) 
E/AndroidRuntime( 246):  ... 10 more 

ответ

1

диалог необходим контекст деятельности. У вас есть услуга. Ваши варианты:

  • Используйте тост.
  • Создайте мероприятие и дайте ему тему диалога.
  • Возможно, существует третий способ создания или получения подходящего контекста, но я не знаю об этом.
+0

Он работал на основе второго варианта «Создайте мероприятие и дайте ему тему диалога». Благодаря.. – jhlee