我想在本机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) { }
...
}
它没有很好的文档记录,但可以。
- 更新
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;
}
}