代码之家  ›  专栏  ›  技术社区  ›  Genaut

Android上的EasyPermissions不授予权限

  •  1
  • Genaut  · 技术社区  · 6 年前

    我在用 容易出错 库授予我的应用程序中的某些权限。这是一个场景:

    这是logcat初始化我的应用程序并按下按钮。

    D/HomeActivity: He pulsado ringtoneMenuOpen
    D/HomeActivity: onPermissionsDenied
    D/HomeActivity: Hemos llegado aquí con permisos denegados y 'No volver a mostrar'
    

    然后出现一个对话框( 应用程序设置对话框 )有必要使用“取消”和“接受”按钮解释权限。我按下“接受”键 设置应用程序屏幕打开 .我点击权限项并 它被启用了 ... 我返回应用程序,Logcat显示给我看 未经许可 调试说明。我再次在运行时点击按钮(进入铃声设置逻辑,因为我已被授予权限),但我再次进入 未经许可 mehod。。

    onPermissionsGranted He pulsado ringtoneMenuOpen
    onPermissionsDenied Hemos llegado aquí con permisos denegados y 'No volver a mostrar'
    

    这是我的班级结构(仅供参考)

    public class Home implements EasyPermissions.PermissionCallbacks{
    
    ...
    private String[] permission_sounds = {Manifest.permission.WRITE_SETTINGS, Manifest.permission.WRITE_EXTERNAL_STORAGE};
    private int RC_permissionSounds = 500;
    private Activity act;
    
    ..onCreate{
        act = this;
    }
    
    //I assign this onClickListener to ringtoneButton
    private View.OnClickListener ringtoneMenuOpen(){
            Log.d(TAG, "ringtoneMenuOpen accedemos, tenemos que entrar ahora en solicitar permisos e intentar ");
            soundButtonMode = SoundButtonMode.RIGNTONE;
            return new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Log.d(TAG, "He pulsado ringtoneMenuOpen"); //Line 1 Logcat
                    if (EasyPermissions.hasPermissions(act, permission_sounds)) {
                        new SetSoundAsRingtone(act).execute();
                    } else {
                        EasyPermissions.requestPermissions(act, act.getString(R.string.permission_rationale), RC_permissionSounds, permission_sounds);
                    }
                }
            };
        }
    ...
        @Override
        public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
            EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, act);
        }
        @Override
        public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
            Log.d(TAG, "onPermissionsGranted");
            buttonRingtone.performClick();
        }
        @Override
        public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
            Log.d(TAG, "onPermissionsDenied");//Line 2 Logcat
    
            if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
                Log.d(TAG, "Hemos llegado aquí con permisos denegados y 'No volver a mostrar'"); //Line 3 Logcat
                new AppSettingsDialog.Builder(this).build().show();
            }
        }
    ...
    
    0 回复  |  直到 5 年前