yanzhenjie / AndPermission

:strawberry: Permissions manager for Android platform.
https://yanzhenjie.com/AndPermission
Apache License 2.0
6.63k stars 1.1k forks source link

三星Galaxy S6手机权限问题 #282

Open OvenCroc opened 6 years ago

OvenCroc commented 6 years ago

手机型号: 三星Galaxy s6 SM-G9200 android版本: android 7.0 版本号: NRD90M.G9200ZCS2ERC1 请求权限: Permission.READ_PHONE_STATE 过程描述: splash页面oncreate方法中请求权限 --> 弹出权限选择框 --> 点击允许 -- > 执行ondenied 代码如下

/**
   * 获取各个权限
   *
   * @author zhoupan
   * Created at 2018/2/1 16:39
   */
  private void getPermission() {
      AndPermission
          .with(SplashActivity.this)
          .runtime()
          .permission(Permission.READ_PHONE_STATE)
          .onGranted(new Action<List<String>>() {
              @Override
              public void onAction(List<String> data) {
                  getHandle().postDelayed(new Runnable() {
                      @Override
                      public void run() {
                          gotoActivityFinishSelf(LoginActivity.class);
                      }
                  }, 500);
              }
          })
          .onDenied(new Action<List<String>>() {
              @Override
              public void onAction(List<String> permissions) {
                  ToastUtils.showLongSafe("permisson denied");
              }
          })
          .start();
}
yanzhenjie commented 6 years ago

你好,使用的AndPermission是哪个版本?

OvenCroc commented 6 years ago

@yanzhenjie 严老板我用的是最新的 rc10那个

yanzhenjie commented 6 years ago

你好,我这边机器都没有问题,因此不好重现你描述的问题,要麻烦你帮忙调试一下:

  1. 源码的PhoneStateReadTest#text()方法是否发生异常,异常信息是什么,如果没有发生异常,返回值是true or false?

如果上述1正常切返回值是true,再测试一下下面这段代码的result在点击拒绝和同意时的值分别是多少:

String op = AppOpsManager.permissionToOp(Manifest.permission.READ_PHONE_STATE);
AppOpsManager manager = (AppOpsManager) getSystemService(Context.APP_OPS_SERVICE);
int result = manager .checkOpNoThrow(op, android.os.Process.myUid(), getPackageName());

第一个测试需要在源码中打断点,第二个测试直接复制代码到onDenied()的回调中执行并断点或者打印即可。

OvenCroc commented 6 years ago

@yanzhenjie 好的 谢谢严老板 我这里调试一下再给你说一下

OvenCroc commented 6 years ago

@yanzhenjie 我这边另外一个s6也没得问题 , 可能是三星版本的问题 我先试试你说的方法 , 看看是怎么回事

yanzhenjie commented 6 years ago

只要找到问题出在哪里,原因是什么,我都好解决。