2016-12-20 11 views
0

私は、位置情報サービスが有効になっていることに依存するアプリケーションを持っています。ロケーションサービスが有効になるまでアプリケーションを待機させますか?

したがって、ユーザーがアプリケーションを起動すると、ダイアログボックスが表示され、ロケーションサービスが有効かどうかが確認されます。ただし、ユーザーが設定ページ(ダイアログボックスの[OK]をクリックするとリダイレクトされる)に移動し、位置情報サービスを有効にするまで、アプリケーションを一時停止する必要があります。彼がしたら、彼はMainActivityに戻ることができるはずであり、コードは彼が中止したところで続けるべきです。

私は、アプリケーションを一時停止させない場合、コードはそのまま継続し、位置情報サービスが必要なコードを実行しようとすると、アプリケーションがクラッシュします。

私は現在これを持っていますので、どのように修正して待ちますか?

答えて

0

あなたのケースでは簡単にstartActivityForResultを使用できます。

ロケーションを有効にする設定を開始するときに、このような意図を開始することができます。

// Declare a global variable first 
private final int ACTION_LOCATION_SETTING = 100; 

// Now change the onClickListener like this 
dialog.setPositiveButton("Take me to location services", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface paramDialogInterface, int paramInt) { 
     Intent locationSettingIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
     startActivityForResult(locationSettingIntent, ACTION_LOCATION_SETTING); 
    } 
}); 

ここでロケーション設定から戻ると、ここにコールバックがあります。

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch (requestCode) { 
     case ACTION_LOCATION_SETTING: 
      if (resultCode == Activity.RESULT_OK) { 
       if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 
        //DO FANCY STUFF WITH LOCATION 
       } 
      } 
      break; 
     default: 
      super.onActivityResult(requestCode, resultCode, data); 
    } 
} 

シンプル!

+0

ブリリアント。 「imageChooserIntent」の値が何を参照しているか教えていただけますか? – Chris

+0

申し訳ありません、答えを編集しました。それは 'locationSettingIntent'でなければなりません。 –

関連する問題