Android【使用EasyPermissions申请动态权限】总结笔记

    xiaoxiao2022-07-13  193

    一:EasyPermissions系统权限库

    easyPermissions:是简单的系统权限库,并干掉6.+++以上的系统权限问题。

    优点:它也简化了我们的操作,提升了效率,内部的封装使得我们的代码减少了很多,下面我们来看一下它的自我介绍:

    github 地址:https://github.com/jiezongnewstar/easypermissions

    佳姝1:添加依赖。

    implementation 'pub.devrel:easypermissions:2.0.1'

     佳姝2:实现接口【implements EasyPermissions.PermissionCallbacks】,如图:

    重写授权成功和失败的回调: 

    @Override public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) { //已授予某些权限 //1.先检查自己是否申请过权限 (如果是) ->不处理 //2.没有申请过权限 注册权限 确认是否开启 (如果是)-> 不处理 //3.(如果不是)-> 弹出弹框提示" 确保应用正常使用,请开启权限!" (如果不是)-> 不处理 //4.是 调用流程 ->第2步用户永远禁止那么会出现死循环,直到用户允许为止。 } @Override public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) { //否认,弹出对话框,直到用户允许此权限为止,才不会走此方法。   new AlertDialog.Builder(this) .setMessage("是否使用此权限") .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { } }).setPositiveButton("Sure", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { hasPermissions(); } }).show(); }

    知识:常用权限(可能不全) 

     SMS(短信)                                                          SEND_SMS  RECEIVE_SMS                                            

     READ_SMS  RECEIVE_WAP_PUSH  RECEIVE_MMS

     STORAGE(存储卡-读写权限)  READ_EXTERNAL_STORAGE  WRITE_EXTERNAL_STORAGE

     CONTACTS(联系人)  READ_CONTACTS  WRITE_CONTACTS  GET_ACCOUNTS

     PHONE(手机)  READ_PHONE_STATE  CALL_PHONE  READ_CALL_LOG  WRITE_CALL_LOG  ADD_VOICEMAIL  USE_SIP  PROCESS_OUTGOING_CALLS

     CALENDAR(日历)  READ_CALENDAR  WRITE_CALENDAR

     CAMERA(相机)  ACCESS_FINE_LOCATION

     LOCATION(位置)  ACCESS_FINE_LOCATION  ACCESS_COARSE_LOCATION

     SENSORS(传感器)  BODY_SENSORS

     MICROPHONE(麦克风)  RECORD_AUDIO     

     佳姝3:根据自己需求手动添加请求权限。

    //相机摄像头权限,自己可以添加需要判断的权限. String[] perms = {Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.CAMERA}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); hasPermissions(); } //检查自己是否申请过权限 private void hasPermissions() { if (!EasyPermissions.hasPermissions(this, perms)) { EasyPermissions.requestPermissions(new PermissionRequest.Builder(this, 2000, perms).build()); } }

     佳姝4:重写回调方法。

    @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); // 将结果转发到easypermissions EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); }

     

    最新回复(0)