0

I've been trying to using an AlertDialog to open when the user does not have GPS enabled and direct them to the Settings.ACIOTN_LOCATION_SOURCE_SETTINGS using an intent.

    private void buildAlertDialog() 
{
    // TODO Auto-generated method stub
    AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
    builder.setMessage("Gps is disabled, do you want to enable it?");
    builder.setCancelable(false);
    builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int id) 
        {
            // TODO Auto-generated method stub
            startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));

        }
    });

    builder.setNegativeButton("No", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int id) {
            // TODO Auto-generated method stub
            dialog.cancel();
        }
    });
    AlertDialog alert = builder.create();
    alert.show();
}

The buildAlertDialog() is called when the user enters this activity and GSP is not enabled it is called by this snippet of code

mLocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    if(!mLocManager.isProviderEnabled(LocationManager.GPS_PROVIDER))
    {
        buildAlertDialog();
    }
    mLocListener = new LocListener();
    mLocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocListener);

The Logcat output of the error is as follows

 FATAL EXCEPTION: main
 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fyp.run_race/com.fyp.run_race.Begin_Run}: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2781)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2797)
at android.app.ActivityThread.access$2300(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2132)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:4914)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
 Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
at android.view.ViewRoot.setView(ViewRoot.java:513)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
at android.app.Dialog.show(Dialog.java:241)
at com.fyp.run_race.Begin_Run.buildAlertDialog(Begin_Run.java:133)
at com.fyp.run_race.Begin_Run.onCreate(Begin_Run.java:82)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1065)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2745)
... 11 more

I thought it might be that the new activity is not registered with the android manifest file of the application

Droid_Interceptor
  • 613
  • 3
  • 14
  • 37

1 Answers1

1

There may be a problem with the getApplicationContext() line, check this thread

You should pass an Activity reference to the builderAlertDialog() it would be this if the method is called from an Activity class.

Community
  • 1
  • 1
MobileCushion
  • 7,065
  • 7
  • 42
  • 62