6.0权限动态适配(四)(存在问题)

来源:互联网 发布:耳机推荐 知乎 编辑:程序博客网 时间:2024/06/05 13:29

功能

动态申请权限,支持Activity与Fragment,且拒绝后可判断并再次弹出对话框。

用法

  • 引入

    • project’s build.gradle

      buildscript {      dependencies {          classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'      }}
    • module’s build.gradle

      apply plugin: 'com.neenbedankt.android-apt'dependencies {    apt 'com.zhy:mpermission-compiler:1.0.0'    compile 'com.zhy:mpermission-api:1.0.0'}
  • 申请权限

    MPermissions.requestPermissions(MainActivity.this, REQUEST_CODE_SDCARD, Manifest.permission.WRITE_EXTERNAL_STORAGE);
  • 权限申请回调

    @Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults){    MPermissions.onRequestPermissionsResult(this, requestCode, permissions, grantResults);    super.onRequestPermissionsResult(requestCode, permissions, grantResults);}
  • 结果

    • 成功方法通过注解@PermissionGrant标识

      @PermissionGrant(REQUEST_CODE_SDCARD)public void requestSdcardSuccess() {    Toast.makeText(this, "GRANT ACCESS SDCARD!" + " " + MPermissions.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE, REQUEST_CODE_SDCARD), Toast.LENGTH_SHORT).show();}
    • 失败方法通过注解@PermissionDenied标识

      @PermissionDenied(REQUEST_CODE_SDCARD)public void requestSdcardFailed() {     Toast.makeText(this, "DENY ACCESS SDCARD!" + " " + MPermissions.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE, REQUEST_CODE_SDCARD), Toast.LENGTH_SHORT).show();}
  • 若需解释,会自动执行使用@ShowRequestPermissionRationale注解的方法

    if (!MPermissions.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE, REQUECT_CODE_SDCARD)){    MPermissions.requestPermissions(MainActivity.this, REQUEST_CODE_SDCARD, Manifest.permission.WRITE_EXTERNAL_STORAGE);}

问题

小米4S真机测试,初次提示无论点击拒绝或同意,MPermissions.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE, REQUEST_CODE_SDCARD)均返回false

完整代码

https://github.com/snpmyn/PermissionDynamicTwo.git

原著

MyPermissions