You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 10:如何检测用户对CHANGE_WIFI_STATE权限通知的操作

Android 10下检测addNetworkSuggestions权限通知的用户操作问题

问题背景

我在Android 10上使用addNetworkSuggestions接口实现自动连接已有WiFi热点,核心实现代码如下:

val wifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManager;

val status = wifiManager.addNetworkSuggestions(suggestionsList);
if (status != WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS) {
    // 错误处理逻辑
}

// 可选:监听连接后的广播
val intentFilter = IntentFilter(WifiManager.NETWORK_STATE_CHANGED_ACTION);

val broadcastReceiver = object : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        if (!intent.action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
            return;
        }
        // 连接后的处理逻辑
    }
};
context.registerReceiver(broadcastReceiver, intentFilter);

在Android 10设备上,调用该接口后系统会弹出通知询问用户是否允许权限:
Android权限通知

根据官方文档描述,这是Android 10的正常行为:

在Android 11(API级别30)及更高版本中,应用在前台运行时用户会看到对话框,后台运行时会看到通知。
在Android 10(API级别29)中,无论应用在前台还是后台运行,用户都会看到通知。

我的需求是:用户未接受权限时显示引导文本,已接受则隐藏该文本,但目前无法检测用户对系统权限通知的接受/拒绝操作。

已尝试的方法及结果

  • 检查wifiManager.addNetworkSuggestions返回结果:即便用户未接受权限,该方法仍返回STATUS_NETWORK_SUGGESTIONS_SUCCESS,无法触发错误处理逻辑
    val status = wifiManager.addNetworkSuggestions(suggestionsList);
    if (status != WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS) {
        // 用户未接受权限时,此代码块不会触发
    }
    
  • 使用ActivityCompat.checkSelfPermission:该方法始终返回true,无法判断权限状态
    ActivityCompat.checkSelfPermission(this, Manifest.permission.CHANGE_WIFI_STATE)
    
  • 使用AppOpsManager.unsafeCheckOp:用户未操作通知时返回true,仅在用户拒绝权限时返回false,无法检测用户接受权限的状态
    appOpsManager.unsafeCheckOp("android:change_wifi_state", Process.myUid(), applicationContext.packageName) == AppOpsManager.MODE_ALLOWED
    
  • 使用requestPermissions请求Manifest.permission.CHANGE_WIFI_STATE:虽能收到PackageManager.PERMISSION_GRANTED的回调,但调用后仍会弹出系统权限通知,无法解决问题

已声明的权限

Manifest文件中已添加以下权限:

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

内容的提问来源于stack exchange,提问作者Bertrand Martel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 12:02:44