You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Webview授予相机权限的配置方法及代码实现指引

问题解决全步骤

1 先修正现有Activity的两处基础错误

你的原代码有两个容易忽略的小问题,先改掉避免后续报错:

  • 类定义末尾多余的泛型声明需要删除,将public class ThirdActivity<Webview> extends AppCompatActivity修改为public class ThirdActivity extends AppCompatActivity
  • onCreate方法中重复定义了webView1变量,你已经在类头部声明了全局的private WebView webView1,所以将onCreate里的WebView webView1 = (WebView) findViewById(R.id.webView1);删掉开头的类型声明,改为webView1 = (WebView) findViewById(R.id.webView1);即可。

2 加入WebChromeClient权限处理代码

你找到的这段代码直接加在webView1.setWebViewClient(new WebViewClient());的下一行即可,修改后的代码片段如下:

webView1.setWebViewClient(new WebViewClient());

// 新增代码开始
webView1.setWebChromeClient(new WebChromeClient() {
    @Override
    public void onPermissionRequest(final PermissionRequest request) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            request.grant(request.getResources());
        }
    }
});
// 新增代码结束

webView1.loadUrl("替换为你需要访问的、要调用相机的网页地址");

3 补充运行时权限申请

Android 6.0及以上版本,相机、录音这类敏感权限除了在Manifest里声明,还需要在App运行时主动向用户申请授权,否则网页也拿不到权限。在onCreate方法的setContentView(R.layout.activity_third);之后加入以下代码即可:

// 动态申请相机、录音权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    if (checkSelfPermission(Manifest.permission.CAMERA) != android.content.pm.PackageManager.PERMISSION_GRANTED
            || checkSelfPermission(Manifest.permission.RECORD_AUDIO) != android.content.pm.PackageManager.PERMISSION_GRANTED) {
        requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO}, 100);
    }
}

最终验证

你原有的Manifest权限配置已经符合要求不需要修改,改完以上三处代码后重新编译运行App,第一次打开时会弹出权限申请框,点击允许后再进入需要调用相机的网页就可以正常使用相机功能了。

内容的提问来源于stack exchange,提问作者Aquilon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:15:03