我想在原生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) { }
...
}
没有充分记录,但是可以。
NativeModule
以同时实现PermissionListener和覆盖onRequestPermissionsResult()方法。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;
}
}