首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓WebView和WebGL

安卓WebView和WebGL
EN

Stack Overflow用户
提问于 2016-03-02 20:13:16
回答 3查看 4.2K关注 0票数 2

安卓WebView: WebGL在某些设备上不起作用

我在android应用程序中使用Webview。任务是在屏幕上添加WebGL交互元素。应用程序具有minSdk v21。谷歌宣布他们在WebView v36中支持WebGL。我使用html5test.com页面和我的测试网页检查WebGL状态。

我的测试设置: Google Nexus 6P - Android 6.0.1,webView v48 - WebGL OK

索尼Xperia Z2 -安卓5.1.1,webView v48 - WebGL正常工作

三星Galaxy Note4-安卓5.1.1,webView v48 - WebGL正常工作

三星Galaxy Tab S-安卓5.0.2,webView v48 - WebGL出现故障空白屏幕

RKM V5安卓电视-安卓5.1.1,webView v39 - WebGL出现故障空白屏幕

我在谷歌开发人员文档中没有看到任何关于android.webkit.WebView元素的信息,有什么方法可以让它在所有设备上工作吗?

我的webView初始化:

代码语言:javascript
复制
    mElementView = new WebView(mContext);
    mElementView.setVerticalScrollBarEnabled(scrollEnabled);
    mElementView.setHorizontalScrollBarEnabled(scrollEnabled);

    mElementView.getSettings().setJavaScriptEnabled(true);
    mElementView.getSettings().setAllowUniversalAccessFromFileURLs(true);
    mElementView.getSettings().setAllowFileAccessFromFileURLs(true);

更新: WebGL可以在所有设备的Chrome浏览器中运行,但在Galaxy Tab和安卓电视webViews中无法运行

EN

回答 3

Stack Overflow用户

发布于 2018-09-05 00:46:36

虽然晚了,但我认为这对某些人会有帮助。在使用webView的活动中,在androidmanifests set:android:hardwareAccelerated="true"中设置。我的webView是这样的:

代码语言:javascript
复制
 webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setPluginState(WebSettings.PluginState.ON);
    webView.getSettings().setDomStorageEnabled(true);
    webView.getSettings().setAllowContentAccess(true);
    webView.getSettings().setLoadsImagesAutomatically(true);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        webView.getSettings().setAllowFileAccessFromFileURLs(true);
    }
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

    webView.setWebChromeClient(new WebChromeClient());
票数 8
EN

Stack Overflow用户

发布于 2016-03-02 20:24:26

这个编码运行得很好。尝尝这个

代码语言:javascript
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.about);

    mToolbar = (Toolbar) findViewById(R.id.toolbar);
    TextView title=(TextView)findViewById(R.id.toolbar_title);
    title.setText(R.string.about);
    setSupportActionBar(mToolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    webView=(WebView)findViewById(R.id.webView);
    webView.setWebViewClient(new MyBrowser());
    webView.getSettings().setLoadsImagesAutomatically(true);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    webView.loadUrl(url);
}
private class MyBrowser extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}
public boolean onOptionsItemSelected(MenuItem item)
{
    switch (item.getItemId()) {
        case android.R.id.home:
            Intent report = new Intent(About.this, MainActivity.class);
            startActivity(report);
            finish();
            break;
        default:
            break;
    }
    return false;
}
@Override
public void onBackPressed() {
    Intent intent=new Intent(About.this,MainActivity.class);
    startActivity(intent);
    super.onBackPressed();
}
票数 1
EN

Stack Overflow用户

发布于 2016-03-02 20:25:43

查看this answer。这可能会有一些帮助。否则,我建议您使用CrossWalk项目。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35746920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档