Android6.0新特性:权限管理
2016-10-25 14:41
197 查看
最近不是很忙,但是总不能虚度浪费时间,技术还是要提升的,曾在技术交流群中遇到有人因为没有对android 6.0系统权限做处理,导致程序一直出错。Google 2015年的 I/O大会上已经正式发布了android 6.0,虽然目前android 6.0使用者仅2.7%,但还是有学习的必要的。好了废话就不多说了。
2、在AndroidManifest.xml中申请你需要的权限,包括普通权限和需要申请的特殊权限。(之所以还需要在AndroidManifest.xml中添加你需要申请的特殊权限是为兼容android
6.0 以下的系统)
3、开始申请权限,分为3部分(下面涉及到的方法我都封装起来放在BaseActivity中)
(1)使用checkPermission方法检查权限,返回值true表示已申请相关权限,false表示没有申请相关权限
(2)使用requestPermission方法申请权限
(3)重写onRequestPermissionsResult方法对相应权限处理(申请权限完成时调用此方法回调处理)
BaseActivity
使用时候只需要写一个子Activity继承BaseActivity,直接使用父类中checkPermission和requestPermission方法,重写父类中的doCallPermission方法处理拨打电话逻辑(重写doSDCardPermission方法进行文件读写操作,例如:下载一张图片),此处我使用以上两种作为举例,具体使用根据自己项目需要延伸扩展。
(首次写博客,缺乏经验,不足之处,还望多多指导,相互交流,相互学习)
android 6.0权限基本知识,以下是需要单独申请的权限,共分为9组,每组只要有一个权限申请成功了,就默认整组权限都可以使用了。
group:android.permission-group.CONTACTS permission:android.permission.WRITE_CONTACTS permission:android.permission.GET_ACCOUNTS permission:android.permission.READ_CONTACTS group:android.permission-group.PHONE permission:android.permission.READ_CALL_LOG permission:android.permission.READ_PHONE_STATE permission:android.permission.CALL_PHONE permission:android.permission.WRITE_CALL_LOG permission:android.permission.USE_SIP permission:android.permission.PROCESS_OUTGOING_CALLS permission:com.android.voicemail.permission.ADD_VOICEMAIL group:android.permission-group.CALENDAR permission:android.permission.READ_CALENDAR permission:android.permission.WRITE_CALENDAR group:android.permission-group.CAMERA permission:android.permission.CAMERA group:android.permission-group.SENSORS permission:android.permission.BODY_SENSORS group:android.permission-group.LOCATION permission:android.permission.ACCESS_FINE_LOCATION permission:android.permission.ACCESS_COARSE_LOCATION group:android.permission-group.STORAGE permission:android.permission.READ_EXTERNAL_STORAGE permission:android.permission.WRITE_EXTERNAL_STORAGE group:android.permission-group.MICROPHONE permission:android.permission.RECORD_AUDIO group:android.permission-group.SMS permission:android.permission.READ_SMS permission:android.permission.RECEIVE_WAP_PUSH permission:android.permission.RECEIVE_MMS permission:android.permission.RECEIVE_SMS permission:android.permission.SEND_SMS permission:android.permission.READ_CELL_BROADCASTS[/code]
以下是普通权限,只需要在AndroidManifest.xml中申请即可。android.permission.ACCESS_LOCATION_EXTRA_COMMANDS android.permission.ACCESS_NETWORK_STATE android.permission.ACCESS_NOTIFICATION_POLICY android.permission.ACCESS_WIFI_STATE android.permission.ACCESS_WIMAX_STATE android.permission.BLUETOOTH android.permission.BLUETOOTH_ADMIN android.permission.BROADCAST_STICKY android.permission.CHANGE_NETWORK_STATE android.permission.CHANGE_WIFI_MULTICAST_STATE android.permission.CHANGE_WIFI_STATE android.permission.CHANGE_WIMAX_STATE android.permission.DISABLE_KEYGUARD android.permission.EXPAND_STATUS_BAR android.permission.FLASHLIGHT android.permission.GET_ACCOUNTS android.permission.GET_PACKAGE_SIZE android.permission.INTERNET android.permission.KILL_BACKGROUND_PROCESSES android.permission.MODIFY_AUDIO_SETTINGS android.permission.NFC android.permission.READ_SYNC_SETTINGS android.permission.READ_SYNC_STATS android.permission.RECEIVE_BOOT_COMPLETED android.permission.REORDER_TASKS android.permission.REQUEST_INSTALL_PACKAGES android.permission.SET_TIME_ZONE android.permission.SET_WALLPAPER android.permission.SET_WALLPAPER_HINTS android.permission.SUBSCRIBED_FEEDS_READ android.permission.TRANSMIT_IR android.permission.USE_FINGERPRINT android.permission.VIBRATE android.permission.WAKE_LOCK android.permission.WRITE_SYNC_SETTINGS com.android.alarm.permission.SET_ALARM com.android.launcher.permission.INSTALL_SHORTCUT com.android.launcher.permission.UNINSTALL_SHORTCUT[/code]
申请步骤
1、将targetSdkVersion设置为23,注意:如果你将targetSdkVersion设置为>=23,则必须动态申请权限,如果你暂时不打算支持动态申请权限,你的targetSdkVersion最大值只能设置为22。2、在AndroidManifest.xml中申请你需要的权限,包括普通权限和需要申请的特殊权限。(之所以还需要在AndroidManifest.xml中添加你需要申请的特殊权限是为兼容android
6.0 以下的系统)
3、开始申请权限,分为3部分(下面涉及到的方法我都封装起来放在BaseActivity中)
(1)使用checkPermission方法检查权限,返回值true表示已申请相关权限,false表示没有申请相关权限
(2)使用requestPermission方法申请权限
(3)重写onRequestPermissionsResult方法对相应权限处理(申请权限完成时调用此方法回调处理)
BaseActivity
/** * Description:BaseActivity * Created by Anna on 2016/10/25. */ public class BaseActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); } /** * 为子类提供一个检查权限的方法 * @param permissions * @return */ public boolean checkPermission(String ...permissions){ for(String permission : permissions){ if(ContextCompat.checkSelfPermission(this,permission) != PackageManager.PERMISSION_GRANTED){ return false; } } return true; } /** * 为子类提供一个权限请求方法 * @param requestCode * @param permissions */ public void requestPermission(int requestCode,String ...permissions){ ActivityCompat.requestPermissions(this,permissions,requestCode); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode){ case Constants.WRITE_EXTERNAL_STORAGE: doSDCardPermission(); break; case Constants.CALL_PHONE: doCallPermission(); break; } } /** * 默认写sdcard权限处理 */ public void doSDCardPermission(){ } /** * 默认打电话权限处理 */ public void doCallPermission(){ } }
使用时候只需要写一个子Activity继承BaseActivity,直接使用父类中checkPermission和requestPermission方法,重写父类中的doCallPermission方法处理拨打电话逻辑(重写doSDCardPermission方法进行文件读写操作,例如:下载一张图片),此处我使用以上两种作为举例,具体使用根据自己项目需要延伸扩展。
(首次写博客,缺乏经验,不足之处,还望多多指导,相互交流,相互学习)
相关文章推荐
- Android6.0新特性---权限管理
- android6.0 权限管理 方案
- 6.0新特性 权限管理方式
- Android6.0的权限管理(相机权限的举例)
- Android6.0M权限管理实战,完美轻量级封装
- Android6.0权限管理被忽略问题
- Android6.0新特性 运行时权限
- 权限管理2 以及bash的特性 快捷键,补全功能以及变量的类型,登录类型,脚本
- linux文件管理类命令,类型,用户的权限管理及bash shell的特性:命令别名,文件名通配
- android6.0权限管理
- Android 6.0新特性之 权限管理
- Android6.0权限管理
- Android6.0权限管理以及使用权限该注意的地方
- Android教程 -05 Android6.0权限的管理
- Android教程 -05 Android6.0权限的管理
- android6.0 权限管理
- Android6.0新特性,导致读取SD卡文件的权限错误,Exception 'open failed: EACCES (Permission denied)'
- 关于Android6.0(23以上)版本权限管理的问题
- 关于Android6.0权限管理 动态注册
- Android6.0权限管理完全解析