如何以编程方式检查Android"位置同意"?

时间:2014-05-13 00:09:44

标签: android permissions gps location

我想以编程方式确定用户是否同意或不同意"位置同意"在Android设备上打开GPS时出现的对话框。

我无法找到从何处获取此信息,而且我不确定 在代码中的任何位置是否实际可用?

谢谢!

2 个答案:

答案 0 :(得分:1)

这是关于位置模式。如果用户同意"位置同意",位置模式设置为高精度。

要检查此模式,您可以使用以下代码:

    public static boolean checkLocationSettings(Context context) {

    int locationMode = 0;
    String locationProviders;

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
        try {
            locationMode = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE);

        } catch (SettingNotFoundException e) {
            e.printStackTrace();
        }

        return (locationMode != Settings.Secure.LOCATION_MODE_OFF && locationMode == Settings.Secure.LOCATION_MODE_HIGH_ACCURACY); //check location mode

    }else{
        locationProviders = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
        return !TextUtils.isEmpty(locationProviders);
    }


}

答案 1 :(得分:0)

检查较新的gms.location.SettingsApi。您构建一个LocationRequest并询问当前系统设置是否兼容,并根据需要处理结果。

https://developer.android.com/reference/com/google/android/gms/location/SettingsApi.html