如何检查我是不是在 android 4.4 及更高版本中以编程方式打开了 gps? [复制]

Posted

技术标签:

【中文标题】如何检查我是不是在 android 4.4 及更高版本中以编程方式打开了 gps? [复制]【英文标题】:How to check if gps i turned on or not programmatically in android version 4.4 and above? [duplicate]如何检查我是否在 android 4.4 及更高版本中以编程方式打开了 gps? [复制] 【发布时间】:2017-10-16 20:47:34 【问题描述】:

我曾尝试在线搜索答案,但它们似乎仅适用于 android 4.0 及以下版本

【问题讨论】:

请提供minimal reproducible example 展示您的尝试并详细解释“它们似乎仅适用于 android 4.0 及以下版本”的意思。 【参考方案1】:
public static boolean isLocationEnabled(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 false;
        

        return locationMode != Settings.Secure.LOCATION_MODE_OFF;

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


 

【讨论】:

非常感谢它就像一个魅力! 此代码已弃用。你能建议替代代码吗?【参考方案2】:

您可以使用LocationManager

此类提供对系统位置服务的访问。这些服务允许应用程序获取设备地理位置的定期更新,或在设备进入给定地理位置附近时触发应用程序指定的 Intent。

这是您要查找的代码 sn-p

LocationManager locationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER))

这已经从 Android 4.4 及以上版本测试。但不适用于 8.0。

【讨论】:

wgat 为 8.0 及以上版本做些什么? 这在 8.0 及更高版本上运行良好。

以上是关于如何检查我是不是在 android 4.4 及更高版本中以编程方式打开了 gps? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何检查我是否在Android 4.4及以上版本中以编程方式打开gps? [重复]

在 C++11 及更高版本中,std::string::operator[] 是不是进行边界检查?

如何在 android 2.3 及更高版本中获取当前启动器的包名?

如何以编程方式在 Android(KitKat 及更高版本)中添加 APN

如何在 Android 3.0 及更高版本中更改 ActionBar 的触摸效果颜色

我如何检查运行我的应用程序的 Android 设备是不是在 4.2.2 及更低版本上运行 [重复]