POPUP при загрузке завершен - PullRequest
       13

POPUP при загрузке завершен

0 голосов
/ 10 февраля 2011

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

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 Ответ

1 голос
/ 10 февраля 2011

Диалог нуждается в контексте действия. У вас есть сервис. Ваши варианты:

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