3

私はメソッドonProviderDisabledの中にfolowingコードを使用する必要があります。しかしそれは長く続くことはありません。 ユーザーが応答するまでにはどのように待機できますか?アンドロイドでonProviderDisabledの警告ダイアログを表示LocationListener

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(); 

ありがとうございます!あなたはこのような操作のためのAsyncTaskを使用する必要があります

答えて

6

ご覧のように試してみてください。

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(); 
       } 
      } 

     } 
}; 
関連する問題