需要获得Android网页视图中访问摄像头的权限吗?

时间:2017-08-23 10:25:14

标签: android android-webview

我正在Android工作室的Webview的帮助下开发一个Web应用程序,但有一些问题我需要访问权限才能打开相机我该怎么做才能在 {中获得以下权限{1}}

AndroidManifest.xml

打开相机需要做些什么?

3 个答案:

答案 0 :(得分:5)

如果您的应用针对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

答案 1 :(得分:2)

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

  1. 创建扩展WebChromeClient;
  2. 的类
  3. 覆盖onPermissionRequest()
  4. 请求您的应用内部获得权限,或以其他方式处理请求。
  5. 您可能还需要覆盖onPermissionRequestCanceled()
  6. 将您的客户实例设置为WebView webView.setWebChromeClient(chromeClient);

答案 2 :(得分:1)

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

Javascript interface

Android webView

您需要做的就是设置javascript调用back.call来自您网页的方法,处理活动/片段中的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");