Android6.0之后推出动态申请权限,所有敏感权限默认都是没有开启的状态,需要动态添加权限的。但是项目中有些三方预置的apk需要默认将权限开启。

权限组 权限
PHONE READ_PHONE_STATE
PHONE CALL_PHONE
PHONE READ_CALL_LOG
PHONE WRITE_CALL_LOG
PHONE ADD_VOICEMAIL
PHONE USE_SIP
PHONE PROCESS_OUTGOING_CALLS
CONTACTS READ_CONTACTS
CONTACTS WRITE_CONTACTS
CONTACTS GET_ACCOUNTS
LOCATION ACCESS_FINE_LOCATION
LOCATION ACCESS_COARSE_LOCATION
LOCATION ACCESS_BACKGROUND_LOCATION
CALENDAR READ_CALENDAR
CALENDAR WRITE_CALENDAR
SMS SEND_SMS
SMS RECEIVE_SMS
SMS READ_SMS
SMS RECEIVE_WAP_PUSH
SMS RECEIVE_MMS
SMS READ_CELL_BROADCASTS
MICROPHONE RECORD_AUDIO
CAMERA CAMERA
STORAGE READ_EXTERNAL_STORAGE
STORAGE WRITE_EXTERNAL_STORAGE
STORAGE ACCESS_MEDIA_LOCATION

1、预置应用默认权限管理类

DefaultPermissionGrantPolicy.java是对预置应用默认权限管理类

/frameworks/base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.javaprivate void grantDefaultSystemHandlerPermissions(int userId) {Set TEST_PERMISSIONS = new ArraySet<>();TEST_PERMISSIONS.add(Manifest.permission.RECEIVE_SMS);TEST_PERMISSIONS.add(Manifest.permission.READ_PHONE_STATE);TEST_PERMISSIONS.add(Manifest.permission.PROCESS_OUTGOING_CALLS);grantPermissionsToSystemPackage("包名", userId,  TEST_PERMISSIONS);}

2、手动安装应用默认权限管理类

PermissionManagerService是对手动安装的应用默认权限处理类

/frameworks/base/services/core/java/com/android/server/pm/permission/PermissionManagerService.javaprivate void restorePermissionState(@NonNull PackageParser.Package pkg, boolean replace,    @Nullable String packageOfInterest, @Nullable PermissionCallback callback) {// IMPORTANT: There are two types of permissions: install and runtime.// Install time permissions are granted when the app is installed to// all device users and users added in the future. Runtime permissions// are granted at runtime explicitly to specific users. Normal and signature// protected permissions are install time permissions. Dangerous permissions// are install permissions if the app's target SDK is Lollipop MR1 or older,// otherwise they are runtime permissions. This function does not manage// runtime permissions except for the case an app targeting Lollipop MR1// being upgraded to target a newer SDK, in which case dangerous permissions// are transformed from install time to runtime ones.if(pkg.packageName.contains("包名")) {final int permsSize = pkg.requestedPermissions.size();for (int i=0; i

以上两种方式都对CTS/GTS有影响,需要apk自身向google申请白名单

更多相关文章

  1. android settings模块中添加来电反转静音功能
  2. Android6.0系统悬浮窗权限的问题解决方法
  3. 判断当前应用程序处于前台还是后台 ANDROID
  4. Android配置文件权限一览表
  5. android 简单解决询问权限问题和apk打包过大问题
  6. android java获得root权限调用linux命令
  7. Android(安卓)9.0静默安装与卸载app
  8. Android(安卓)可任意拖动的悬浮窗(类似悬浮球)
  9. 访问自己创建的Contentprovider 抛异常 提示Permission Denial:

随机推荐

  1. Android按返回键弹出对话框退出应用程序
  2. Android分享功能
  3. Using Android's Compatibility Test Sui
  4. Android(安卓)正则表达式验证手机和邮箱
  5. 【从头学android】第一个程序,点按钮显示H
  6. Android大图片加载处理
  7. android 数据库初体验
  8. Android(安卓)studio 学习资料汇总
  9. Android(安卓)HapticFeedback触感反馈
  10. android 按返回退出应用