📅  最后修改于: 2023-12-03 15:13:21.228000             🧑  作者: Mango
在 Android 应用中,网络通讯是非常常见的操作。但是在 Android 系统中,应用需要获取网络权限才能进行网络通讯操作。否则会抛出 SecurityException
异常。
获取网络权限可以在 AndroidManifest.xml 文件中声明:
<uses-permission android:name="android.permission.INTERNET" />
应用在使用网络前最好检查是否已经获取了网络权限。可以通过 ContextCompat.checkSelfPermission 方法进行检查。
if (ContextCompat.checkSelfPermission(context, Manifest.permission.INTERNET)
== PackageManager.PERMISSION_GRANTED) {
// 已获取网络权限,进行网络操作
} else {
// 未获取网络权限,申请网络权限
}
如果应用未获取网络权限,可以通过 ActivityCompat.requestPermissions 方法请求权限。
if (ContextCompat.checkSelfPermission(context, Manifest.permission.INTERNET)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(activity,
new String[]{Manifest.permission.INTERNET},
REQUEST_CODE_INTERNET_PERMISSION);
}
在请求权限的回调方法 onRequestPermissionsResult 中处理权限请求结果。
@Override
public void onRequestPermissionsResult(int requestCode,
String[] permissions, int[] grantResults) {
if (requestCode == REQUEST_CODE_INTERNET_PERMISSION) {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 用户授权,进行网络操作
} else {
// 用户拒绝授权,提示用户
Toast.makeText(this, "未获取网络权限,不能进行网络操作",
Toast.LENGTH_SHORT).show();
}
}
}
Android 上网权限是保护用户隐私和安全的重要措施。应用在进行网络操作前需要检查和申请网络权限。同时要在用户拒绝授权的情况下给用户友好提示。