【问题标题】:Show alert dialog in onProviderDisabled in android LocationListener在 android LocationListener 的 onProviderDisabled 中显示警报对话框
【发布时间】:2011-08-17 09:08:57
【问题描述】:

我需要在 onProviderDisabled 方法中使用以下代码。但它不会持续很长时间。 我怎样才能等到用户响应?

AlertDialog.Builder builder = new AlertDialog.Builder(Activity.this);
        builder.setMessage("Your GPS is disabled! Would you like to enable it?").setCancelable(false).setPositiveButton("Enable GPS", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                Intent gpsOptionsIntent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                startActivity(gpsOptionsIntent);
            }
        });
        builder.setNegativeButton("Do nothing", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                dialog.cancel();
            }
        });
        AlertDialog alert = builder.create();
        alert.show();

提前致谢!!

【问题讨论】:

    标签: android geolocation locationlistener android-alertdialog


    【解决方案1】:

    试试这样。

    public void onProviderDisabled(String provider) {
         Message msg = handler.obtainMessage();
         msg.arg1 = 1;
         handler.sendMessage(msg);
    }
    
    private final Handler handler = new Handler() {
         public void handleMessage(Message msg) {
              if(msg.arg1 == 1){
                   if (!isFinishing()) { // Without this in certain cases application will show ANR
                        AlertDialog.Builder builder = new AlertDialog.Builder(Activity.this);
                        builder.setMessage("Your GPS is disabled! Would you like to enable it?").setCancelable(false).setPositiveButton("Enable GPS", new DialogInterface.OnClickListener() {
                             public void onClick(DialogInterface dialog, int id) {
                                  Intent gpsOptionsIntent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                                  startActivity(gpsOptionsIntent);
                              }
                         });
                         builder.setNegativeButton("Do nothing", new DialogInterface.OnClickListener() {
                              public void onClick(DialogInterface dialog, int id) {
                                   dialog.cancel();
                              }
                         });
                         AlertDialog alert = builder.create();
                         alert.show();
                   }
               }
    
           }
    }; 
    

    【讨论】:

      【解决方案2】:

      您应该使用 AsyncTask 进行此类操作。请参阅此处http://developer.android.com/reference/android/os/AsyncTask.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-08
        • 2014-02-18
        相关资源
        最近更新 更多