在 Android 开发中,为你的应用添加网络访问和存储权限是常见的需求。本文将介绍如何在 AndroidManifest.xml 文件中声明权限,以及使用运行时权限机制动态检测和申请权限的步骤。

在 AndroidManifest.xml 文件中声明权限

首先,你需要在你的 AndroidManifest.xml 文件中声明需要的权限。以下代码声明了网络访问和存储权限:

<uses-permission android:name='android.permission.INTERNET' />
<uses-permission android:name='android.permission.WRITE_EXTERNAL_STORAGE' />

使用运行时权限动态检查和申请权限

从 Android 6.0(API 级别 23)开始,Android 引入了运行时权限机制,需要在代码中动态检查权限并向用户申请。以下代码示例展示了如何在 Activity 的 onCreate 方法中检查权限并申请权限:

private static final int PERMISSION_REQUEST_CODE = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // 检查网络访问权限和存储权限
    if (checkSelfPermission(Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED ||
            checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
        // 申请权限
        requestPermissions(new String[]{Manifest.permission.INTERNET, Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE);
    } else {
        // 权限已经被授予,执行你的逻辑操作
        // ...
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    if (requestCode == PERMISSION_REQUEST_CODE) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED &&
                grantResults[1] == PackageManager.PERMISSION_GRANTED) {
            // 权限已经被授予,执行你的逻辑操作
            // ...
        } else {
            // 权限被拒绝,可以根据需要进行相应处理
            // ...
        }
    }
}

代码说明

  • 在 onCreate 方法中,我们使用 checkSelfPermission() 方法检查网络访问权限和存储权限是否已经被授予。
  • 如果任何一个权限没有被授予,我们使用 requestPermissions() 方法向系统申请权限。
  • 当用户选择允许或拒绝权限后,系统会回调 onRequestPermissionsResult() 方法,你可以在该方法中处理相应的逻辑操作。

重要提示

  • 在 AndroidManifest.xml 文件中声明权限只是为了声明应用需要这些权限,但并不代表应用已经获得了这些权限。
  • 从 Android 6.0 开始,应用需要在运行时动态检查和申请权限。
  • 当用户拒绝某个权限时,你需要根据需要进行相应处理,例如向用户解释为何需要该权限,或者提示用户无法使用某些功能。
Android 开发:添加网络访问和存储权限 - 权限检测和申请指南

原文地址: http://www.cveoy.top/t/topic/iFii 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录