如何使用 onRequestPermissionsResult 处理 React Native Android 模块中的权限?
Posted
技术标签:
【中文标题】如何使用 onRequestPermissionsResult 处理 React Native Android 模块中的权限?【英文标题】:How to use onRequestPermissionsResult to handle permissions in React Native Android module? 【发布时间】:2020-06-03 13:54:35 【问题描述】:我想在原生 android 模块中使用 onRequestPermissionsResult
,它可以导入到 React Native 项目中。
权限处理需要在模块中进行 - 所以PermissionsAndroid 或更改项目 MainActivity 将不起作用。对于类似的onActivityResult
,有一种方法可以将create and add a listener 连接到 ReactApplicationContext。
有没有办法为onRequestPermissionsResult
做到这一点?
编辑:添加本机模块代码以显示我正在尝试做的事情:
public class NativeModule extends ReactContextBaseJavaModule
public NativeModule(ReactApplicationContext reactContext)
super(reactContext);
...
@ReactMethod
public void requestPermissions()
getCurrentActivity().requestPermissions(...)
// is it possible to hook into the requestPermissions callback with the result from within the module?
// public boolean onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
...
【问题讨论】:
上传您的代码以便检查 【参考方案1】:没有很好的记录,但是你可以。
-
更新您的
NativeModule
以同时实现 PermissionListener 并覆盖 onRequestPermissionsResult() 方法。
将当前活动转换为PermissionAwareActivity 并调用其requestPermissions() 方法,将this
作为listener
参数传递。
这是一个例子:
public class NativeModule extends ReactContextBaseJavaModule implements PermissionListener
@ReactMethod
public void requestPermissions()
PermissionAwareActivity activity = (PermissionAwareActivity) getCurrentActivity();
if (activity == null)
// Handle null case
activity.requestPermissions(..., this);
@Override
public boolean onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
// Handle result
return true;
【讨论】:
以上是关于如何使用 onRequestPermissionsResult 处理 React Native Android 模块中的权限?的主要内容,如果未能解决你的问题,请参考以下文章
如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]
如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?