2016-03-02 136 views
1

Android WebView:WebGL在某些設備上不工作Android WebView和WebGL

我在我的android應用程序中使用Webview。任務是在屏幕上添加WebGL交互元素。 應用程序有minSdk v21。 Google宣佈他們支持WebView v36中的WebGL。我使用html5test.com頁面和我的測試網頁檢查WebGL狀態。

我的測試設置: 谷歌Nexus 6P - 安卓6.0.1,webView的V48 - WebGL的OK作品

索尼xperiaz2 - 安卓5.1.1,webView的V48 - WebGL的OK作品

三星Galaxy Note 4 - 安卓5.1.1,webView的V48 - WebGL的OK作品

三星Galaxy Tab的S - 安卓5.0.2,webView的V48 - WebGL的失敗黑屏

RKM V5的Android電視 - 的Android 5.1.1,webView的V39 - WebGL失敗的空白屏幕

我在android.webkit.WebView元素 的谷歌開發者文檔中沒有看到任何信息是否有任何方法可以在所有設備上工作?

我webView的初始化:

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和Android TV網頁視圖

回答

1

這種編碼工作良好。試試這個

@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(); 
} 
+0

不幸的是,它並沒有幫助我 – Slonorib

+0

發生了什麼,這一個是爲我工作 –

1

結賬this回答。這可能有一些幫助。否則,我會建議使用CrossWalk項目。

+0

謝謝,但CrossWalk是我的項目太重的解決方案 – Slonorib