- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试使用 ConnectivityManager.requestNetwork(NetworkRequest, ConnectivityManager.NetworkCallback)
ConnectivityManager.bindProcessToNetwork(Network)
原因是强制应用在某个没有互联网连接的特定网络(它是本地硬件通信网络)中调用 future 的请求。此时,系统正在通过 3G/4G 网络发送请求,并且永远无法到达所需的 Wifi 网络,因为该网络没有响应 connectivity check那个安卓电话。
当我调用 requestNetwork
方法时,我收到以下错误:
java.lang.SecurityException: com.xyz.app was not granted either of these permissions: android.permission.CHANGE_NETWORK_STATE, android.permission.WRITE_SETTINGS.
我尝试调用新方法来请求 Android 6.0 中可用的权限:
requestPermissions(new String[]{Manifest.permission.CHANGE_NETWORK_STATE, Manifest.permission.WRITE_SETTINGS}, PERMISSIONS_REQUEST_WIFI);
但回调始终是PackageManager.PERMISSION_DENIED
。
我将这两个权限都放在了AndroidManifest.xml
中,但没有成功。
注意:Manifest.permission.WRITE_SETTINGS
不在 Permissions Groups 中.
最佳答案
我不确定这是否是 Google 有意为之,但以下是我看到的行为:
CHANGE_NETWORK_STATE
似乎总是被拒绝(如评论中所述,它是签名许可),但这似乎也无关紧要。我的 ConnectivityManager
网络请求似乎都由 WRITE_SETTINGS
门控 - 所以如果你有 WRITE_SETTINGS
你不需要 CHANGE_NETWORK_STATE
.
如评论中所述,您执行此操作与其他权限不同,使用:
Intent goToSettings = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
goToSettings.setData(Uri.parse("package:" + Context.getPackageName()));
startActivity(goToSettings);
在那之后,我的 ConnectivityManager
网络请求非常好。
要在调用 ACTION_MANAGE_WRITE_SETTINGS
Activity 之前检查是否已授予权限,此答案的解决方案是使用 Settings.System.canWrite(Context)
Can't get WRITE_SETTINGS permission
更新:从 Android 6.0.1 开始,CHANGE_NETWORK_STATE
会在您的 list 文件中请求时自动授予。上述 WRITE_SETTINGS
检查仅在 6.0
关于android - Android 6.0 中的 ConnectivityManager.requestNetwork,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32185628/
我正在使用一些代码来检测移动数据和蜂窝网络是否可用,如下所示: final ConnectivityManager connection_manager = (Conn
通过主线程调用 ConnectivityManager 的 requestNetwork() 接口(interface)是否安全,或者它暂停了 ANR 错误的威胁? 最佳答案 是的。这是一个异步操作。
我正在尝试使用 ConnectivityManager.requestNetwork(NetworkRequest, ConnectivityManager.NetworkCallback) 获取新的
我是一名优秀的程序员,十分优秀!