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

问题描述 投票:0回答:1

我想在原生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) { }

    ...
}
react-native react-native-android android-permissions
1个回答
0
投票

没有充分记录,但是可以。

  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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.