18

位置情報を使用する 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));
}
4

5 に答える 5

8

次のように確認できます。

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);
于 2013-08-09T15:49:43.143 に答える
2

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
} 
于 2016-04-01T14:42:36.010 に答える
0

残念ながら、Settings.Secure.LOCATION_PROVIDERS_ALLOWEDAPI 19 以降、 の使用は非推奨になっているようです。

それを行う新しい方法は次のとおりです。

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
}
于 2016-04-01T14:39:27.340 に答える