Android 15下如何获取Background data与Unrestricted mobile data usage状态?
Android 检查后台数据与无限制移动数据状态
检查「Background data」(后台数据)状态
Android 提供系统API判断应用后台数据是否被限制,需根据系统版本适配:
Android 10(API 29)及以上:调用
ConnectivityManager.getRestrictBackgroundStatus(),返回值对应三种状态:RESTRICT_BACKGROUND_STATUS_RESTRICTED:后台数据已关闭(用户禁用)RESTRICT_BACKGROUND_STATUS_WHITELISTED:应用在后台数据白名单,不受限制RESTRICT_BACKGROUND_STATUS_DISABLED:后台数据未受限(开关开启)
Android 6(API 23)至Android 9(API 28):调用
ConnectivityManager.isBackgroundDataRestricted(),返回true代表后台数据被禁用。
代码示例(Kotlin):
val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager val isBackgroundDataDisabled = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { connectivityManager.restrictBackgroundStatus == ConnectivityManager.RESTRICT_BACKGROUND_STATUS_RESTRICTED } else { @Suppress("DEPRECATION") connectivityManager.isBackgroundDataRestricted }
检查「Unrestricted mobile data usage」(无限制移动数据)状态
通过PackageManager获取应用信息,判断是否开启无限制移动数据权限:
代码示例(Kotlin):
val packageManager = packageManager val appInfo = packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA) val isUnrestrictedMobileDataEnabled = appInfo.flags and ApplicationInfo.FLAG_DATA_USAGE_UNRESTRICTED != 0
注意:调用上述API需声明
android.permission.ACCESS_NETWORK_STATE权限,部分系统版本需在运行时请求权限。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

