如何使用 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) { }

    ...
}

它没有很好的记录,但你可以。

  1. 更新您的 NativeModule 以同时实施 PermissionListener and override the onRequestPermissionsResult() 方法。
  2. 将当前 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;
    }
}