Android 应用程序强制在显示对话框时关闭

Android 应用程序强制在显示对话框时关闭,android,android-location,Android,Android Location,我一直在尝试使用警报对话框在用户未启用GPS时打开,并使用意图将他们引导到设置。ACIOTN\u位置\u源设置 private void buildAlertDialog() { // TODO Auto-generated method stub AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext()); builder.setMessage("Gps is d

我一直在尝试使用
警报对话框
在用户未启用GPS时打开,并使用意图将他们引导到
设置。ACIOTN\u位置\u源设置

    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();
}
当用户输入此活动且GSP未启用时,将调用
buildAlertDialog()
,此代码段将调用此活动

mLocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    if(!mLocManager.isProviderEnabled(LocationManager.GPS_PROVIDER))
    {
        buildAlertDialog();
    }
    mLocListener = new LocListener();
    mLocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocListener);
错误的Logcat输出如下所示

 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

我想可能是新活动未在应用程序的android清单文件中注册

可能是
getApplicationContext()
行有问题,请检查


您应该将
活动
引用传递给
builderDialog()
如果从
活动
类调用该方法,则该方法将是

请重试。builder=新建AlertDialog.builder(YouActivityName.this);