每天学习一点点,成功增加一大步

Android permission 访问权限大全

Android zhanghui 932℃

给 APP 添加的权限是常用的操作,比如访问互联网的时候,就需要 INTERNET 的权限,没有这个权限你的 app 就不能访问外网的资源了。权限的添加位置在 AndroidManifest.xml 这个文件中(具体位置看下图),这个文件在项目中是唯一的所以很好找(这里就不多写了)。

AndroidManifest.xml。添加的位置

由于安卓6.0之后只在Manifest文件中写上个权限列表,已经不行了,需要写代码动态申请权限

import android.Manifest;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Build;

import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

public class PermissionUtil {

    Activity activity;
    static int version;
    public final static int REQUEST_CODE_ADDRESS = 100;

    public PermissionUtil(Activity _activity) {
        activity = _activity;
        version = Build.VERSION.SDK_INT;
    }

    /**
     * 校验 Permission权限
     * @param context    Context
     * @param permission 权限名
     * @return 是否有权限
     */
    private boolean checkPermission(String permission) {
        boolean result = false;
        if (version >= Build.VERSION_CODES.M) {
            if (ContextCompat.checkSelfPermission(activity, permission) == PackageManager.PERMISSION_GRANTED) {
                return true;
            } else {
                return false;
            }
        } else {
            PackageManager pm = activity.getPackageManager();
            if (pm.checkPermission(permission, activity.getPackageName()) == PackageManager.PERMISSION_GRANTED) {
                result = true;
            }
        }
        return result;
    }

    /**
     * 申请单个权限
     */
    public static void startRequestPermission(Activity activity, String permission) {
        ActivityCompat.requestPermissions(activity, new String[]{permission}, REQUEST_CODE_ADDRESS);
    }

    /**
     * 申请多个权限
     * @param activity
     * @param permission
     */
    public static void startRequestPermission(Activity activity, String[] permission) {
        ActivityCompat.requestPermissions(activity, permission, REQUEST_CODE_ADDRESS);
    }

    /**
     * 示例:是否有摄像头权限
     * @return
     */
    public boolean isCamera() {
        String[] permission_list = {
                Manifest.permission.CAMERA,
                Manifest.permission.READ_EXTERNAL_STORAGE,
                Manifest.permission.WRITE_EXTERNAL_STORAGE
        };
        if (!checkPermission(Manifest.permission.CAMERA) ||
                !checkPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
            startRequestPermission(activity, permission_list);
            return false;
        }
        return true;
    }

}

下面列下常用的权限

android.permission.INTERNET

访问网络连接,可能产生GPRS流量

android.permission.WRITE_EXTERNAL_STORAGE

允许程序写入外部存储,如SD卡上写文件

android.permission.READ_EXTERNAL_STORAGE

读外部存储的权限

android.permission.RECEIVE_BOOT_COMPLETED

允许程序开机自动运行,使用到的场景
https://blog.csdn.net/languobeibei/article/details/78480913

android.permission.FOREGROUND_SERVICE

前台服务的权限,使用到的场景
解决 Not allowed to start service Intent
https://www.jianshu.com/p/f86dc8ec03a8

android.permission.CAMERA

调用摄像头的权限

android.permission.MOUNT_UNMOUNT_FILESYSTEMS

文件系统权限

android.permission.WRITE_SETTINGS

允许程序读取或写入系统设置

转载请注明:隨習筆記 » Android permission 访问权限大全

喜欢 (0)