【问题标题】:Handle Permissions Request Result Without Subclassing Activity and Overriding onRequestPermissionsResult Method在不继承 Activity 和覆盖 onRequestPermissionsResult 方法的情况下处理权限请求结果
【发布时间】:2021-02-25 17:36:01
【问题描述】:

我正在从 Cordova 插件内基于非Activity 的类调用权限请求,并且我的应用程序的主要活动无法扩展,因此我无法实现/覆盖活动的onRequestPermissionsResult 方法。在用户获得授权后,我需要运行一个事件,例如下面注释的伪代码 lambda,但我不确定如何。我尝试创建自己的Activity 子类并实现此方法,但我得到了NullPointerException

class MyPlugin extends CordovaPlugin {

    private void saveAndOpenFile() {
        int permission = 
            ActivityCompat.checkSelfPermission(
                cordova.getActivity(), 
                Manifest.permission.WRITE_EXTERNAL_STORAGE);
        if (permission != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(
                cordova.getActivity(),
                PERMISSIONS_STORAGE,
                REQUEST_EXTERNAL_STORAGE
            ); /*.then((int requestCode, String[] permissions, int[] grantedResults) -> {
                // Do something crazy
            });*/
        }
    }

}

【问题讨论】:

    标签: java cordova permissions


    【解决方案1】:

    我建议关注这个documentation

    简而言之,您应该使用cordova.hasPermission 来检查我们是否拥有权限,然后使用cordova.requestPermission,它“将调用活动并导致出现提示,请求权限。一旦用户拥有权限,结果必须使用onRequestPermissionResult 方法处理,每个插件都应该覆盖该方法。”因此,听起来 CordovaPlugin 提供了一个空的 onRequestPermissionResult 基本实现,您的插件应该覆盖它。

    当然,我想您可能可以通过调用 ActivityCompat.checkSelfPermissionAcitivity.requestPermissions 而逃脱,但无论哪种方式,您的插件都应该覆盖 onRequestPermissionResult

    class MyPlugin extends CordovaPlugin {
    
        private void saveAndOpenFile() {
            /* check permissions
                      ...       
                               */
        }
        
        @Override
        public void onRequestPermissionResult(int requestCode, String[] permissions,
                                              int[] grantResults) throws JSONException {
            /* check permission granted and proceed accordingly */
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2013-05-16
      • 1970-01-01
      • 1970-01-01
      • 2021-01-14
      • 2012-06-13
      • 2020-09-08
      • 1970-01-01
      • 1970-01-01
      • 2011-06-14
      相关资源
      最近更新 更多