如何使用 onRequestPermissionsResult 来处理 React Native Android 模块中的权限?
How to use onRequestPermissionsResult to handle permissions in React Native Android module?
我想在本机 Android 模块中使用 onRequestPermissionsResult
,该模块可以导入到 React Native 项目中。
权限处理需要在模块中进行 - 所以 PermissionsAndroid or changing the project MainActivity won't work. For the similar onActivityResult
there is a way to 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 and override the onRequestPermissionsResult() 方法。
- 将当前 activity 转换为 PermissionAwareActivity and call its 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;
}
}
我想在本机 Android 模块中使用 onRequestPermissionsResult
,该模块可以导入到 React Native 项目中。
权限处理需要在模块中进行 - 所以 PermissionsAndroid or changing the project MainActivity won't work. For the similar onActivityResult
there is a way to 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 and override the onRequestPermissionsResult() 方法。 - 将当前 activity 转换为 PermissionAwareActivity and call its 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;
}
}