给 APP 添加的权限是常用的操作,比如访问互联网的时候,就需要 INTERNET 的权限,没有这个权限你的 app 就不能访问外网的资源了。权限的添加位置在 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 访问权限大全