場所を使用するAndroidアプリがありますが、ユーザーが[設定]> [場所へのアクセス]で[現在地へのアクセス]を無効にすると、何も機能しなくなります。有効になっていることを確認するにはどうすればよいですか?無効になっている場合、アプリからこれらの設定を開くにはどうすればよいですか?
ありがとう
解決済み:
String locationProviders = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if (locationProviders == null || locationProviders.equals("")) {
...
startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
}
これは役に立つかもしれませんそれが位置情報サービスについて議論しているこのサイトをチェックしてください
あなたはそれをそのようにチェックすることができます:
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) // Return a boolean
編集:
ネットワークプロバイダーを確認する場合:
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER) // Return a boolean
編集2:
設定を開きたい場合は、次のインテントを使用できます。
Intent intent = new Intent(Android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
Settings.Secure
を使用せず、すべてのロケーションプロバイダーをスキャンせずにこれを行う別の方法は、次のとおりです。
LocationManager locationManager = (LocationManager) getContext().getSystemService(Context.LOCATION_SERVICE);
int providersCount = locationManager.getProviders(true).size(); // Listing enabled providers only
if (providersCount == 0) {
// No location providers at all, location is off
}
残念ながら、Settings.Secure.LOCATION_PROVIDERS_ALLOWED
の使用はAPI19以降非推奨になっているようです。
そのための新しい方法は次のとおりです。
int locationMode = Settings.Secure.getInt(
getContentResolver(),
Settings.Secure.LOCATION_MODE,
Settings.Secure.LOCATION_MODE_OFF // Default value if not found
);
if (locationMode == Settings.Secure.LOCATION_MODE_OFF) {
// Location is off
}