2013-02-28 83 views
1

我有一個基於alfresco android sdk的應用程序。用戶登錄到MainActivity服務器後啓動。 MainActivity本身幾乎沒有片段。一個片段包含webview,一些按鈕和textview。以下是XML佈局的代碼:Android webview在某些情況下不顯示網頁

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/prop" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:gravity="center" > 

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:orientation="vertical" > 

      <LinearLayout 
       android:id="@+id/video_layout" 
       android:layout_width="match_parent" 
       android:layout_height="192dp"   
       android:orientation="horizontal" 
       android:gravity="center" > 

       <WebView 
        android:id="@+id/video_web_view" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" /> 

      </LinearLayout> 
       . 
       . 
       . 
     </LinearLayout> 
</ScrollView> 

當佈局顯示的WebView應該加載頁面的URL與HTML5視頻,但只顯示空白頁。過了一會兒,空白頁面變爲灰色。我觀察到,這意味着頁面加載,並且在用戶滾動佈局之後,它顯示帶有html5視頻的頁面。這發生在我試過的每個網址上。

在測試活動中,我使用相同的佈局,帶有視頻的頁面被正確加載和顯示。

在片段和測試活動中,我使用相同的代碼來設置webview並加載url。 Javascript已啓用,並且我使用WebChromeClient就像在WebView文檔中推薦的一樣。此外,我在應用程序清單中擁有INTERNET權限。

下面是從onCreate方法的代碼從測試活動:

protected void onCreate(Bundle savedInstanceState){   
     super.onCreate(savedInstanceState);  
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.web_video); 
      web = (WebView)findViewById(R.id.video_web_view); 
       . 
       . 
       . 
      web.setWebChromeClient(new WebChromeClient()); 
      WebSettings webSettings = web.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     webSettings.setJavaScriptCanOpenWindowsAutomatically(true); 
     webSettings.setAllowContentAccess(true); 
     webSettings.setAllowFileAccess(true); 
      webSettings.setPluginState(PluginState.ON); 
     webSettings.setDomStorageEnabled(true); 
     web.setHorizontalScrollBarEnabled(false); 
     web.setVerticalScrollBarEnabled(false); 
     webSettings.setRenderPriority(RenderPriority.HIGH);  
     webSettings.setUseWideViewPort(false); 
     webSettings.setCacheMode(WebSettings.LOAD_DEFAULT); 
      web.loadUrl(someUrl); 
} 

相同的代碼包含在onCreateView片段。唯一不同的是用戶必須登錄到服務器以顯示片段。

我幾乎忘記了對錯誤的logcat的:

02-28 09:34:20.832: V/chromium(9079): external/chromium/net/host_resolver_helper/host_resolver_helper.cc:66: [0228/093420:INFO:host_resolver_helper.cc(66)] DNSPreResolver::Init got hostprovider:0x5354b220 
02-28 09:34:20.832: V/chromium(9079): external/chromium/net/base/host_resolver_impl.cc:1515: [0228/093420:INFO:host_resolver_impl.cc(1515)] HostResolverImpl::SetPreresolver preresolver:0x018ee018 
02-28 09:34:21.182: V/WebRequest(9079): WebRequest::WebRequest, setPriority = 1 
02-28 09:34:21.382: V/chromium(9079): external/chromium/net/disk_cache/hostres_plugin_bridge.cc:52: [0228/093421:INFO:hostres_plugin_bridge.cc(52)] StatHubCreateHostResPlugin initializing... 
02-28 09:34:21.392: V/chromium(9079): external/chromium/net/disk_cache/hostres_plugin_bridge.cc:57: [0228/093421:INFO:hostres_plugin_bridge.cc(57)] StatHubCreateHostResPlugin lib loaded 
02-28 09:34:21.392: V/chromium(9079): external/chromium/net/disk_cache/hostres_plugin_bridge.cc:63: [0228/093421:INFO:hostres_plugin_bridge.cc(63)] StatHubCreateHostResPlugin plugin connected 
02-28 09:34:21.392: V/chromium(9079): external/chromium/net/http/http_cache.cc:1167: [0228/093421:INFO:http_cache.cc(1167)] HttpCache::OnBackendCreated HostStat created 
02-28 09:34:21.392: E/chromium(9079): external/chromium/net/disk_cache/stat_hub.cc:213: [0228/093421:ERROR:stat_hub.cc(213)] StatHub::Init - App org.alfresco.mobile.android.samples isn't supported. 
02-28 09:34:21.392: E/chromium(9079): external/chromium/net/disk_cache/stat_hub.cc:213: [0228/093421:ERROR:stat_hub.cc(213)] StatHub::Init - App org.alfresco.mobile.android.samples isn't supported. 
02-28 09:34:22.222: D/skia(9079): notifyPluginsOnFrameLoad not postponed 

有誰知道我做錯了什麼?有沒有人有一些建議可以幫助我?

感謝您的回答,並對我的英文不好。

回答

0

檢查您是否在AndroidManifest文件中包含了INTERNET PERMISSION。

 <uses-permission android:name="android.permission.INTERNET" /> 
+0

感謝您的回答,但我alredy在清單文件中有這種權限。 – menda00 2013-02-28 14:25:03

0

請在您的WebView活動類文件添加

android:hardwareAccelerated="true" 

。因爲在Android 3.0+中,只有我們在android清單文件中添加此行時才支持它。

+0

我讀了關於這個befor並將此行添加到清單,但它沒有幫助。 – menda00 2013-02-28 14:28:38

+0

我不得不再次考慮你的答案,並且我嘗試了'View.isHardwareAccelerated()',並且在兩種情況下該方法都返回'false'。即使我的Manifest中有'android:hardwareAccelerated =「true」'。所以我嘗試了一切,從這個[鏈接](http://developer.android.com/guide/topics/graphics/hardware-accel.html),它仍然返回false。 – menda00 2013-02-28 15:15:38

6

所以我想出了我做錯了什麼。它與加速有關。我簡單地添加以下行到我的代碼:

mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 

它解決了我的問題。

1

我有同樣的問題。下面的代碼段解決了這個問題

WebView webView = (WebView) findViewById(R.id.webview); 
    webView.getSettings().setJavaScriptEnabled(true);  
    webView.getSettings().setLoadWithOverviewMode(true); 
    webView.getSettings().setUseWideViewPort(true); 
    webView.setWebChromeClient(new WebChromeClient()); 
    webView.loadUrl(url); 
0

在看了這篇文章並做了一些其他的研究後,我終於明白我的問題是什麼。我的清單是正確的,我的佈局和webview設置都是正確的。但是,我傳入我的WebViewActivity類的URL格式不正確。所不同的是非常微妙的......

我有我的URL格式以某種方式:

格式爲:「方案://www.websitename。COM //」

例:‘http://www.awebsite.com//

事實證明,然而一些網站不格式化正是這種方式和瀏覽器的工作就是填補空白,爲您舉例來說,你可以鍵入「google.com」到瀏覽器,它會知道帶你到「https://www.google.com/」。Android WebView不會這樣做。

修復程序: 訪問您嘗試在桌面瀏覽器中加載的網站並在網站加載後複製網址。

將其直接粘貼到您的Java代碼:

final String websiteURL = "http://awebsite.com//"; 

請注意,此URL上沒有「www。」。有些網站需要「www」。有些則沒有。再次,從您的桌面Web瀏覽器複製URL以確定是否「www。」是必要的。另外需要注意的是,在這個URL的末尾有一個雙斜槓「//」。

底線,在Android的WebView是挑剔的,它需要的是字符串URL是正是權或將開始折騰起來象這樣的錯誤之一:

12-16 13:40:26.518: E/chromium(13869): external/chromium/net/disk_cache/stat_hub.cc:216: [1216/134026:ERROR:stat_hub.cc(216)] StatHub::Init - App com.nucitrus.thestory isn't supported. 

我希望這有助於!

0

我有同樣的問題。但它修復當我在手機上的WiFi或互聯網

相關問題