最近看到群里看到一个女生,讲述了她从开始选择Android,经过非常努力的学习和挣扎,然而最后面对当前的环境却不得不放弃。看完以后真的非常替她感觉惋惜,如果早几年入行可能结果会比现在好很多,但可惜,这就是现实。
这是一个做精品的时代了,不是当年出个产品就能拉投资骗点击的时代了。精品需要的是更专业的人才,也就是对APP开发人员的素质要求会更高,这个市场会回归一个正常的节奏,拿多少钱就是看能力,看产品。
-
@version 1.0
-
@team 美奇软件开发工作室
-
@date 2020/11/23 12:54
*/
public final class Permission {
public static final String[] CALENDAR;
public static final String[] CAMERA;
public static final String[] CONTACTS;
public static final String[] LOCATION;
public static final String[] MICROPHONE;
public static final String[] PHONE;
public static final String[] SENSORS;
public static final String[] SMS;
public static final String[] STORAGE;
//安装应用权限
public static final String[] PACKAGES;
//通知栏权限
public static final String[] NOTIFICATION;
//悬浮窗权限
public static final String[] ALERTWINDOW;
//系统设置权限
public static final String[] SETTINGS;
static {
/**
-
Android系统从6.0开始将权限分为一般权限和危险权限:
-
1、一般权限指不涉及用户隐私的一些权限,比如Internet权限。
-
2、危险权限指涉及获取用户隐私的一些操作所需要的权限,比如读取用户地理位置的权限。
-
Android在对权限进行分类的同时,还将危险类型的权限进行了分组划分,因此我们在申请权限的时候要一组一组的申请。
*/
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
CALENDAR = new String[]{};
CAMERA = new String[]{};
CONTACTS = new String[]{};
LOCATION = new String[]{};
MICROPHONE = new String[]{};
PHONE = new String[]{};
SENSORS = new String[]{};
SMS = new String[]{};
STORAGE = new String[]{};
PACKAGES=new String[]{};
NOTIFICATION=new String[]{};
ALERTWINDOW=new String[]{};
SETTINGS=new String[]{};
} else {
CALENDAR = new String[]{
Manifest.permission.READ_CALENDAR,
Manifest.permission.WRITE_CALENDAR};
CAMERA = new String[]{
Manifest.permission.CAMERA};
CONTACTS = new String[]{
Manifest.permission.READ_CONTACTS,
Manifest.permission.WRITE_CONTACTS,
Manifest.permission.GET_ACCOUNTS};
//Android10及以上版本,新增2种权限
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
LOCATION = new String[]{
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_BACKGROUND_LOCATION,//在后台获取位置(Android 10.0及以上)
Manifest.permission.ACCESS_MEDIA_LOCATION//读取照片中的地理位置(Android 10.0及以上)
};
}else{
LOCATION = new String[]{
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION};
}
MICROPHONE = new String[]{
Manifest.permission.RECORD_AUDIO};
//Android8以上版本PROCESS_OUTGOING_CALLS换成了ANSWER_PHONE_CALLS。
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
PHONE = new String[]{
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CALL_PHONE,
Manifest.permission.READ_CALL_LOG,
Manifest.permission.WRITE_CALL_LOG,