📜  android 上网权限 - Java (1)

📅  最后修改于: 2023-12-03 15:13:21.228000             🧑  作者: Mango

Android 上网权限

在 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 上网权限是保护用户隐私和安全的重要措施。应用在进行网络操作前需要检查和申请网络权限。同时要在用户拒绝授权的情况下给用户友好提示。