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



我想在本机Android模块中使用onRequestPermissionsResult,该模块可以导入到React native项目中。

权限处理需要在模块中进行,因此PermissionsAndroid或更改项目MainActivity将不起作用。对于类似的onActivityResult,有一种方法可以创建一个监听器并将其添加到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((方法
  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;
}
}