Ber*_*tel 5 android android-wifi kotlin android-permissions android-10.0
我正在Android 10 上使用此文档参考addNetworkSuggestions自动连接到现有 Wifi 接入点。
我正在使用以下代码:
\nval wifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManager;\n\nval status = wifiManager.addNetworkSuggestions(suggestionsList);\nif (status != WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS) {\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0// do error handling here\n}\n\n// Optional (Wait for post connection broadcast to one of your suggestions)val intentFilter = IntentFilter(WifiManager.NETWORK_STATE_CHANGED_ACTION);\n\nval broadcastReceiver = object : BroadcastReceiver() {\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0override fun onReceive(context: Context, intent: Intent) {\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0if (!intent.action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0return;\n }\n // do post connect processing here\n }\n};\ncontext.registerReceiver(broadcastReceiver, intentFilter);\nRun Code Online (Sandbox Code Playgroud)\n我使用的是 Android 10 设备,并且收到一条通知,邀请用户允许或不允许该权限:
\n\n根据文档,这是 Android 10 上的正确行为:
\n\n\n在 Android 11(API 级别 30)及更高版本上,如果应用程序在前台运行,用户会看到一个对话框;如果应用程序在后台运行,用户会看到一条通知。
\n
\n\n在 Android 10(API 级别 29)上,无论应用程序是在前台还是后台运行,用户都会看到通知。
\n
如果权限尚未被接受,我想显示一些文本邀请用户接受权限通知。但如果用户已经接受了权限通知,我会隐藏此文本。
\n问题是:如何在Android系统通知中检测用户是否接受/拒绝了权限?
\n我已尝试以下操作:
\nwifiManager.addNetworkSuggestions方法的结果,但STATUS_NETWORK_SUGGESTIONS_SUCCESS即使尚未授予权限,它也会返回。val status = wifiManager.addNetworkSuggestions(suggestionsList);\nif (status != WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS) {\n // this is not triggered even though the user didn\'t accept the permission notification\n}\nRun Code Online (Sandbox Code Playgroud)\nActivityCompat.checkSelfPermissionActivityCompat.checkSelfPermission(this, Manifest.permission.CHANGE_WIFI_STATE)\nRun Code Online (Sandbox Code Playgroud)\n但它总会回归true
AppOpsManager.unsafeCheckOp从这个问题:
\nappOpsManager.unsafeCheckOp("android:change_wifi_state", Process.myUid(), applicationContext.packageName) == AppOpsManager.MODE_ALLOWED\nRun Code Online (Sandbox Code Playgroud)\ntrue即使尚未接受/拒绝许可,它也会返回。但当false用户拒绝权限时它会返回。\n这只适用于用户拒绝 Android 权限通知的情况。
requestPermissions使用Manifest.permission.CHANGE_WIFI_STATE. 我正确地收到了该PackageManager.PERMISSION_GRANTED值。但我不断收到通知许可。我在清单中拥有以下权限:
\n<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />\n<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
489 次 |
| 最近记录: |