如何使用onRequestPermissionsResult处理React Native Android模块中的权限()

一身转战三千里,一剑曾百万师。这篇文章主要讲述如何使用onRequestPermissionsResult处理React Native Android模块中的权限?相关的知识,希望能为你提供帮助。
我想在原生android模块中使用onRequestPermissionsResult,可以将其导入React Native项目中。
权限处理需要在模块中进行-因此PermissionsAndroid或更改项目MainActivity均无效。对于类似的onActivityResult,有一种方法可以将create and add a listener传递到ReactApplicationContext。
[onRequestPermissionsResult有没有办法做到这一点?
【如何使用onRequestPermissionsResult处理React Native Android模块中的权限()】编辑:添加了本机模块代码以显示我要执行的操作:

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()方法。
  2. 将当前活动投射到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; } }


    推荐阅读