在Android 7.0 Nougat中,Google加强了其动态权限管理。应用现在必须请求网络访问权限,对于需要频繁访问网络的应用来说,这可能会成为一个问题。下面是如何在Android 7.0上为我们的应用动态申请网络权限。
- 在AndroidManifest.xml中声明需要的权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
- 检查访问网络的权限是否已经被授权:
private boolean checkNetworkPermission() {
int result = ContextCompat.checkSelfPermission(this, Manifest.permission.INTERNET);
return result == PackageManager.PERMISSION_GRANTED;
}
- 如果尚未获得网络访问权限,请求用户授权:
private void requestNetworkPermission() {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.INTERNET}, NETWORK_REQUEST_CODE);
}
- 处理用户的答复:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case NETWORK_REQUEST_CODE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission was granted. Do the network-related task.
} else {
// Permission denied. Show an error message.
}
break;
}
}
- 适时入口调用:
只有在应用需要使用网络时,才应请求网络访问权限。例如,当用户点击按钮来触发一个需要网络的操作时。
- 最好的做法是当用户尝试执行需要网络权限的操作时,应用应显示一个提供解释的UI,解释为何应用需要这个权限,然后再实际请求权限。这是一种向用户展示尊重,并使他们明白为何应用需要这些权限的好方法。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/172007.html