easypermissions的基本使用
来源:互联网 发布:pose studio mac版 编辑:程序博客网 时间:2024/06/05 07:03
转载请注明出处 http://blog.csdn.net/pyfysf/article/details/78204395
Android 6.0(API 级别 23)开始,在应用运行时向其授予权限,而不是在应用安装时授予。这样可以让用户对应用的功能进行更多控制;
系统权限分为两类:正常权限和危险权限:
正常权限不会直接给用户隐私权带来风险。如果你的应用在其清单中列出了正常权限,系统将自动授予该权限。
危险权限会授予应用访问用户隐私数据的权限。如果你列出了危险权限,则用户必须明确批准您的应用使用这些权限。
注:从 Android 6.0(API 级别 23)开始,用户可以随时从任意应用调用权限,即使应用面向较低的 API 级别也可以调用。无论您的应用面向哪个 API 级别,您都应对应用进行测试,以验证它在缺少需要的权限时行为是否正常。
- 正常权限
NFC READ_SYNC_SETTINGS READ_SYNC_STATS RECEIVE_BOOT_COMPLETED REORDER_TASKS REQUEST_INSTALL_PACKAGES SET_ALARM SET_TIME_ZONE SET_WALLPAPER SET_WALLPAPER_HINTS TRANSMIT_IR UNINSTALL_SHORTCUT USE_FINGERPRINT VIBRATE WAKE_LOCK WRITE_SYNC_SETTINGS ACCESS_LOCATION_EXTRA_COMMANDS ACCESS_NETWORK_STATE ACCESS_NOTIFICATION_POLICY ACCESS_WIFI_STATE BLUETOOTH BLUETOOTH_ADMIN BROADCAST_STICKY CHANGE_NETWORK_STATE CHANGE_WIFI_MULTICAST_STATE CHANGE_WIFI_STATE DISABLE_KEYGUARD EXPAND_STATUS_BAR GET_PACKAGE_SIZE INSTALL_SHORTCUT INTERNET KILL_BACKGROUND_PROCESSES MODIFY_AUDIO_SETTINGS
- 危险权限
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
因此,如果API 23及以上时,我们申请危险权限时,除了在清单文件配置,还要在代码中进行动态申请
我们可以自己去写代码进行权限代码申请,这种方法可以参考这样一篇博客
Android6.0及以上版本申请权限讲解
利用easypermissions进行权限申请
首先在app项目下的build.gradle中添加
android {....}repositories { maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" }}dependencies {.... compile 'pub.devrel:easypermissions:1.0.1'}
这里以照相机权限和位置权限作为例子来讲解;
首先在清单文件(AndroidManifest.xml)中声明这两个属性
<uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
然后在Activity中重写:
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); // Forward results to EasyPermissions EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); }
然后我们就可以直接在Activity中书写请求权限的代码了
//请求码 @AfterPermissionGranted(RC_CAMERA_AND_LOCATION) private void methodRequiresTwoPermission() { String[] perms = {Manifest.permission.CAMERA, Manifest.permission.ACCESS_FINE_LOCATION}; if (EasyPermissions.hasPermissions(this, perms)) { // Already have permission, do the thing // ... Toast.makeText(this, "已经授权", Toast.LENGTH_SHORT).show(); //表明已经授权,可以进行用户授予权限的操作 } else { // Do not have permissions, request them now//弹出一个对话框进行提示用户 EasyPermissions.requestPermissions(this, "应用时需要照相机权限", RC_CAMERA_AND_LOCATION, perms); } }
第一次打开app之后,拒绝权限。第二次进入app就会弹出这个对话框
在oncreate方法中调用这个方法就可以了。
完整的MainActivity
public class MainActivity extends AppCompatActivity { private static final int RC_CAMERA_AND_LOCATION = 100; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); methodRequiresTwoPermission(); } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); // Forward results to EasyPermissions EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); } @AfterPermissionGranted(RC_CAMERA_AND_LOCATION) private void methodRequiresTwoPermission() { String[] perms = {Manifest.permission.CAMERA, Manifest.permission.ACCESS_FINE_LOCATION}; if (EasyPermissions.hasPermissions(this, perms)) { // Already have permission, do the thing // ... Toast.makeText(this, "已经授权", Toast.LENGTH_SHORT).show(); } else { // Do not have permissions, request them now EasyPermissions.requestPermissions(this, "应用时需要照相机权限", RC_CAMERA_AND_LOCATION, perms); } }}
easypermissions的github地址,更多详细代码点击这里
- easypermissions的基本使用
- easypermissions使用
- Easypermissions使用
- googlesamples之easypermissions使用
- googlesamples/easypermissions使用学习
- Android 6.0动态权限框架EasyPermissions的使用
- 使用EasyPermissions 来打造简单的android6.0动态权限
- EasyPermissions的使用方法
- easypermissions
- Android 6.0运行时权限的申请使用及EasyPermissions的使用
- Android 6.0运行时权限的申请使用及EasyPermissions的使用
- 安卓学习笔记--- Android 6.0运行时权限的申请使用及EasyPermissions的使用
- Android动态权限,EasyPermissions 介绍及使用
- 目前最流行的运行时权限请求框架PermissionsDispatcher、RxPermissions和easypermissions的使用和对比
- 目前最流行的运行时权限请求框架PermissionsDispatcher、RxPermissions和easypermissions的使用和对比
- Android权限处理——第三方库easypermissions使用
- Google-EasyPermissions
- Andorid6.0动态权限及开源项目EasyPermissions使用介绍
- View操作引起错误
- 多线程之重入锁ReentrantLock
- socket.error: [Errno 98] Address already in use解决方案
- CoordinatorLayout与Behavior源码分析
- C++之 标准库类型 Vector和String
- easypermissions的基本使用
- 11 UDP:用户数据报协议
- BZOJ3694 最短路 [最短路径树]
- C++多态性
- Mysql JOIN连接的使用(学习整理)
- 查看ubuntu系统是32位还是64位,查看系统版本
- python 特别运算
- springboot+mybatis+redis+thymeleaf Web项目搭建 开箱即用
- .XML之一 如何编写一个.xml文档