已授予Android Webview摄像头和麦克风权限,但无法访问 [英] Android webview camera and microphone permission granted but cannot access

查看:331
本文介绍了已授予Android Webview摄像头和麦克风权限,但无法访问的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是这个Android webview 的新手.我正在创建的应用程序具有摄像头和麦克风访问权限.

I am new to this Android webview. The app that i am creating has camera and microphone access.

已授予对照相机麦克风的权限,但是当尝试打开照相机时,它没有打开.

The permission for camera and microphone gets granted but when trying to open the camera, its not opening.

该网站在移动设备以及台式机浏览器中均可正常运行,但在我的应用中无法打开.请帮我解决这个问题.我有什么想念的吗?

The website works properly in mobile as well in desktop browsers but in my app its not opening. Please help me with this problem. Is there anything that i am missing?

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

    if (requestCode == MY_PERMISSION_REQUEST_CAMERA || requestCode == MY_PERMISSIONS_REQUEST_RECORD_AUDIO) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            Toast.makeText(MainActivity.this, "permission granted", Toast.LENGTH_SHORT).show();

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

@SuppressLint({"SetJavaScriptEnabled", "ClickableViewAccessibility"})
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mContext = this.getApplicationContext();

    if (!isTaskRoot()) {
        finish();
        return;
    }



    myWebView = findViewById(R.id.myWebView);
    myWebView.getSettings().setJavaScriptEnabled(true);
    myWebView.setWebViewClient(new WebViewClient());
    myWebView.setWebViewClient(new MyCustomWebViewClient());



    myWebView.setWebChromeClient(new WebChromeClient());


    myWebView.setWebChromeClient(new MyCustomWebChromeClient());
    myWebView.getSettings().setDomStorageEnabled(true);
    myWebView.loadUrl("https://www.skaplink.com");

    myWebView.getSettings().setUserAgentString(userAgent);

    /*String permission1 = Manifest.permission.CAMERA;
    String permission2 = Manifest.permission.RECORD_AUDIO;
    String permission3 = Manifest.permission.MODIFY_AUDIO_SETTINGS;
    int grant1 = ContextCompat.checkSelfPermission(this, permission1);
    int grant2 = ContextCompat.checkSelfPermission(this, permission2);
    ContextCompat.checkSelfPermission(this, permission3);

    if (grant1 != PackageManager.PERMISSION_GRANTED && grant2 != PackageManager.PERMISSION_GRANTED) {

        String[] permission_list = new String[2];
        permission_list[0] = permission1;
        permission_list[1] = permission2;
        ActivityCompat.requestPermissions(this, permission_list, 1);
        ActivityCompat.requestPermissions(this, permission_list, 2);
        Log.d("Granting Process", "Done");
    }*/
    permission();
}


void permission() {

    if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
        Toast.makeText(MainActivity.this, "You already granted the permission", Toast.LENGTH_SHORT).show();
    } else {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, MY_PERMISSION_REQUEST_CAMERA);
    }

    if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED) {
        Toast.makeText(MainActivity.this, "You already granted the permission", Toast.LENGTH_SHORT).show();
    } else {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO}, MY_PERMISSIONS_REQUEST_RECORD_AUDIO);
    }
}

这些显示在我的logcat中

These are showing in my logcat

无法通知具有视频功能的WebView:无法识别的配置文件2130706434(用于视频/AVC W/VideoCapabilities):不支持的mimevideo/divx W/VideoCapabilities:不支持的mime video/divx4W/VideoCapabilities:不支持的mime video/mp4v-esdpW/VideoCapabilities:不支持的mime video/mp4v-esdpI/VideoCapabilities:视频/mp4v-es的不受支持的配置文件4I/CameraManagerGlobal:连接到摄像头服务W/cr_media:需要MODIFY_AUDIO_SETTINGS和RECORD_AUDIO.没有音频设备会可用于录制W/cr_media:需要MODIFY_AUDIO_SETTINGS和RECORD_AUDIO.没有音频设备可用于录制

Failed to notify a WebView W/VideoCapabilities: Unrecognized profile 2130706434 for video/avc W/VideoCapabilities: Unsupported mime video/divx W/VideoCapabilities: Unsupported mime video/divx4 W/VideoCapabilities: Unsupported mime video/mp4v-esdp W/VideoCapabilities: Unsupported mime video/mp4v-esdp I/VideoCapabilities: Unsupported profile 4 for video/mp4v-es I/CameraManagerGlobal: Connecting to camera service W/cr_media: Requires MODIFY_AUDIO_SETTINGS and RECORD_AUDIO. No audio device will be available for recording W/cr_media: Requires MODIFY_AUDIO_SETTINGS and RECORD_AUDIO. No audio device will be available for recording

推荐答案

似乎您已从用户那里获得了运行时权限,但未授予WebChromeClient的运行权限,请添加以下代码,即可解决问题

seems you have took runtime permission from user, but not granted for WebChromeClient please add following code, will solve problem

 webView.setWebChromeClient(new WebChromeClient(){
        @Override
        public void onPermissionRequest(final PermissionRequest request) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    request.grant(request.getResources());
                }
            });

        }

这篇关于已授予Android Webview摄像头和麦克风权限,但无法访问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆