需要在 Android 网络视图中访问相机的权限?

Need permission to access camera in Android web-view?

我正在 android 工作室的 Webview 的帮助下开发 Web 应用程序,但遇到一些问题我需要访问权限打开相机我该怎么做我已经给出了以下内容AndroidManifest.xml

中的权限
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

打开相机还需要做什么?

如果您的应用面向 Android 6.0 及更高版本,则添加运行时权限

从 Android 6.0(API 级别 23)开始,用户在应用 运行 时向应用授予权限,而不是在他们安装应用时授予权限

使用以下代码为相机添加运行时权限

String permission = Manifest.permission.CAMERA;
int grant = ContextCompat.checkSelfPermission(this, permission);
if (grant != PackageManager.PERMISSION_GRANTED) {
    String[] permission_list = new String[1];
    permission_list[0] = permission;
    ActivityCompat.requestPermissions(this, permission_list, 1);
}

然后像这样处理结果

 @Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                       @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == 1) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            Toast.makeText(AccountClass.this,"permission granted", Toast.LENGTH_SHORT).show();  
             // perform your action here

        } else {
            Toast.makeText(AccountClass.this,"permission not granted", Toast.LENGTH_SHORT).show();
        }
    }

}

了解 runtime permission

如果您正在使用 webView 开发 Web 应用程序,那么您应该了解 Android 提供的 JavascriptInterface。通过以下链接

Javascript interface

Android webView

您需要做的就是设置 javascript 从您的网页调用 back.call 该方法,处理 Activity/fragment 中的 javascript 回调,然后从那里您可以打开相机

您还应该查看@Nilesh Rathod 的回答以获得 运行 时间权限。

下面是对您有帮助的代码片段

private class WebAppInterface {

    public WebAppInterface(Context context) {
    }

    @JavascriptInterface
    public void openCamera(String title) {
        //check permissions and open camera intent;
    }
}


mWebView.addJavascriptInterface(new WebAppInterface(this), "PLATFORM_ID");

我认为这里最好的方法是使用 WebView API 来授予和拒绝权限。

  1. 创建 class 扩展 WebChromeClient;
  2. 覆盖onPermissionRequest()
  3. 在您的应用内请求许可,或以其他方式处理请求。
  4. 此外,您可能需要覆盖 onPermissionRequestCanceled()
  5. 将您的客户端实例设置为 WebView webView.setWebChromeClient(chromeClient);