美文网首页Android研究院android技术专栏Android知识
Android造轮子之6.0运行时权限检查

Android造轮子之6.0运行时权限检查

作者: wanbo_ | 来源:发表于2017-01-13 15:08 被阅读420次

    PermissionsChecker

    一个帮助你完成 Android M 运行时权限检查的库

    第一次造轮子,有人说程序员之所以造轮子,是因为某个问题戳到了他的痛点

    欢迎大家来使用和测试,有不足的地方还希望大家可以提出来,我都会虚心改进

    轮子大家测!只需几行代码完成 Android M 运行时权限检查,欢迎提 issue 和我交流

    Github地址 :https://github.com/Werb/PermissionsCheckerSample

    Screenshot

    PermissionsChecker PermissionsChecker

    Dependency

    Gradle

      compile 'com.werb.permissionschecker:permissionschecker:last-version'
    

    版本查看请移步 GitHub

    Maven

      <dependency>
          <groupId>com.werb.permissionschecker</groupId>
          <artifactId>permissionschecker</artifactId>
          <version>last-version</version>
          <type>pom</type>
      </dependency>
    

    Usage

    • 第一步:在需要相关权限的地方定义权限数组(同时在 AndroidManifest.xml 中声明)
      static final String[] PERMISSIONS = new String[]{
                Manifest.permission.CAMERA,
                Manifest.permission.READ_EXTERNAL_STORAGE
        };
    
    • 第二步:初始化 PermissionsChecker
      permissionChecker = new PermissionChecker(this); // 初始化,必需
      permissionChecker.setTitle(getString(R.string.check_info_title)); // 权限拒绝后的提示,非必需
      permissionChecker.setMessage(getString(R.string.check_info_message)); // 不写会有默认值,如上方截图所示
    
    • 第三步:判断权限
      // check if lack Permissions
      if (permissionChecker.isLackPermissions(PERMISSIONS)) {
            permissionChecker.requestPermissions();
      } else {
            // 执行你的相关操作
      }
    
    • 第四步:权限回调
      @Override
      public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
          switch (requestCode) {
              case PermissionChecker.PERMISSION_REQUEST_CODE:
                  if (permissionChecker.hasAllPermissionsGranted(grantResults)) {
                      // 执行你的相关操作
                  } else {
                      // 权限拒绝后的提示
                      permissionChecker.showDialog();
                  }
                  break;
          }
      }
    

    Bug

    部分国产手机修改了权限设置,若有异常情况出现,请及时提 issue 联系我 ,谢谢

    已知问题

    这里会收集一些已知问题,若有很好的处理方法,也请及时提 issue 联系我

    • 申请 android.permission.CALL_PHONE 时,当遇到 intent.setAction(Intent.ACTION_CALL) 小米手机会走自己的权限提示

    License

    Apache2.0

    最后说几句

    我在 Github 上开了仓库,想要收集一些有趣的文章,可以是任何方面
    仓库地址 :dev-note
    大家可以以 issue 的方式来分享一些有趣的文章,贴链接就好!好的文章我会收录到仓库中!
    在开源的世界中,我们一起进步!

    相关文章

      网友评论

      • BoomHe:刷锅啊:Failed to resolve: com.werb.permissionschecker:permissionschecker:last-version
        Gradle 好像对你last-version 不感冒耶。应用不进来:stuck_out_tongue_closed_eyes:
        wanbo_:@何栋 :joy: 文中有说 ‘’版本查看请移步 GitHub‘’ ,有链接 ,因为版本发布是自动更新的,版本号在 github 主页 readme 最上方 download xxxx ,xxx 就是版本号,自己替换一下就好啦。

      本文标题:Android造轮子之6.0运行时权限检查

      本文链接:https://www.haomeiwen.com/subject/obhsbttx.html