Cordova android 插件中的 onRequestPermissionsResult

Bah*_*ahu 3 android cordova android-permissions

我通过 Cordova 插件(android)访问相机。为此,我permission 向用户询问。如果用户在permission对话框中单击“允许”,我必须启动相机。为此,在本机 Android 中,我重写了onRequestPermissionsResult类似的方法

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    switch (requestCode) {
        case RequestCameraPermissionID: {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
                    return;
                }
                try {
                    cameraSource.start(surfaceView.getHolder());
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,我想onRequestPermissionsResult在 Cordova 插件中使用。任何人都可以帮助我吗?

Dav*_*vid 5

如果您将该方法放入插件.java文件中,它应该可以正常工作。甚至还有关于运行时权限主题的很好的文档。请求权限的工作方式如下:

cordova.requestPermission(CordovaPlugin plugin, int requestCode, String permission);
Run Code Online (Sandbox Code Playgroud)

回调方法如下所示:

public void onRequestPermissionResult(int requestCode, String[] permissions, int[] grantResults) throws JSONException {
  ... // you can find the whole example implementation in the docs
}
Run Code Online (Sandbox Code Playgroud)

如果您不想自己实现此功能,您可以随时使用这个方便的插件:cordova-plugin-android-permissions来请求相机权限。

编辑(如何使用 android-permissions 插件):

var permissions = cordova.plugins.permissions;

permissions.hasPermission(permissions.CAMERA, function(status) {
  if (status.hasPermission) {
    // here you can savely start your own plugin because you already have CAMERA permission
  }
  else {
    // need to request camera permission
    permissions.requestPermission(permissions.CAMERA, success, error);

    function error() {
      // camera permission not turned on
    }

    function success(status) {
      if (status.hasPermission) {
        // user accepted, here you can start your own plugin
      }
    }
  }
});
Run Code Online (Sandbox Code Playgroud)