2012-06-13 23 views
5

Tôi đã viết một chương trình đơn giản theo nghĩa đen tải trang web vào chế độ xem web.Android: removeMessages (int what = 107) không được hỗ trợ trước khi WebViewCore được thiết lập khi url chứa http

URL chứa http: // và chế độ xem web hoạt động tốt, ngoài việc nó vẫn gặp phải lỗi 107 gây phiền nhiễu mà hầu hết ppl đều nói là vì url của bạn không chứa tiêu đề http.

Tôi đã tìm kiếm khắp nơi trên web và không thể tìm thấy bất cứ điều gì giống như trường hợp của tôi

06-13 09:12:25.259: W/webcore(656): java.lang.Throwable: EventHub.removeMessages(int what = 107) is not supported before the WebViewCore is set up. 
06-13 09:12:25.259: W/webcore(656):  at android.webkit.WebViewCore$EventHub.removeMessages(WebViewCore.java:1683) 
06-13 09:12:25.259: W/webcore(656):  at android.webkit.WebViewCore$EventHub.access$7900(WebViewCore.java:926) 
06-13 09:12:25.259: W/webcore(656):  at android.webkit.WebViewCore.removeMessages(WebViewCore.java:1795) 
06-13 09:12:25.259: W/webcore(656):  at android.webkit.WebView.sendOurVisibleRect(WebView.java:2917) 
06-13 09:12:25.259: W/webcore(656):  at android.webkit.ZoomManager.setZoomScale(ZoomManager.java:593) 
06-13 09:12:25.259: W/webcore(656):  at android.webkit.ZoomManager.access$1700(ZoomManager.java:49) 
06-13 09:12:25.259: W/webcore(656):  at android.webkit.ZoomManager$PostScale.run(ZoomManager.java:984) 
06-13 09:12:25.259: W/webcore(656):  at android.os.Handler.handleCallback(Handler.java:605) 
06-13 09:12:25.259: W/webcore(656):  at android.os.Handler.dispatchMessage(Handler.java:92) 
06-13 09:12:25.259: W/webcore(656):  at android.os.Looper.loop(Looper.java:137) 
06-13 09:12:25.259: W/webcore(656):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
06-13 09:12:25.259: W/webcore(656):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-13 09:12:25.259: W/webcore(656):  at java.lang.reflect.Method.invoke(Method.java:511) 
06-13 09:12:25.259: W/webcore(656):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
06-13 09:12:25.259: W/webcore(656):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
06-13 09:12:25.259: W/webcore(656):  at dalvik.system.NativeStart.main(Native Method) 

XML của tôi trông giống như:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/navBar" 
     android:layout_width="fill_parent" 
     android:layout_height="40dp" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <WebView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/webView" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="6.40" > 
    </WebView> 
</LinearLayout> 

Và mã java của tôi trông giống như:

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.Context; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.LinearLayout; 

public class MobileWebView extends Activity{ 
private WebView myWebView; 
final Context context = this; //set the context to be itself 
ProgressDialog progressDialog; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.web_view); //set view 
    //set the webview 
    myWebView = (WebView) findViewById(R.id.webView); 
    myWebView.getSettings().setJavaScriptEnabled(true); 

    //setup and load the progress bar 
    progressDialog = new ProgressDialog(context); 
    progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
    progressDialog.setMessage("Loading. Please wait..."); 

    myWebView.setWebViewClient(new MyWebViewClient(){ 
     @Override 
     public void onPageFinished(WebView view, final String url) { 
      progressDialog.dismiss(); 


     } 
     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      //make sure dialog is showing 
      if(! progressDialog.isShowing()){ 
       progressDialog.show(); 
      } 
     } 
    }); 

    //get the site url passed from main activity 
    String urlName = this.getIntent().getExtras().getString("site"); 
    System.out.println(urlName); 
    myWebView.loadUrl(urlName); 

    SetupNavBar(); 
} 

private void SetupNavBar(){ 
    //set nav bar 
    LinearLayout ll = (LinearLayout)findViewById(R.id.navBar); 

    NavigationBar nb = new NavigationBar(this); 
    nb.setLeftBarButton("Back"); 
    nb.setBarTitle("Online Doctor"); 
    NavigationBar.NavigationBarListener nbl = new NavigationBar.NavigationBarListener() { 

     @Override 
     public void OnNavigationButtonClick(int which) { 
      //if left button 
      if(which == 0){ 
       finish(); 
      } 
     } 
    }; 

    nb.setNavigationBarListener(nbl); 

    ll.addView(nb); 
} 


//override the override loading method for the webview client 
private class MyWebViewClient extends WebViewClient { 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if(url.startsWith("http")){ 
      progressDialog.show(); 
      view.loadUrl(url); 
      return true; 
     } else { 
      return false; 
     } 
    } 
} 

} 

Trong lớp học chính của tôi, tôi gọi đây là:

final Context context = this; //set the context to be itself 
private void setup(){ 
    //assign buttons 
    Button login = (Button)findViewById(R.id.loginButton); 
    Button register = (Button)findViewById(R.id.registerButton); 

    //setup onclick for each button 
    bindButtonWithVisitWebsite(login, "https://onlinedoctor.lloydspharmacy.com/login"); 
    bindButtonWithVisitWebsite(register,"https://onlinedoctor.lloydspharmacy.com/register"); 
} 

private void bindButtonWithVisitWebsite(Button b, final String urlName){ 
    b.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Bundle bundle = new Bundle(); 
      bundle.putString("site",urlName); 
      Intent intent = new Intent(context, MobileWebView.class); 
      intent.putExtras(bundle); 
     } 
    }); 
} 
+0

Tôi gặp vấn đề tương tự. Bạn đã tìm ra bất cứ điều gì chưa? –

+0

No. Vẫn đang tìm cách để giải quyết nó, mặc dù chương trình hoạt động trong anyway, chỉ cần không chắc chắn làm thế nào để có được đi xe của ngoại lệ – phil88530

+0

có thể trùng lặp của [Android: EventHub.removeMessages (int what = 107) không được hỗ trợ trước khi WebViewCore là thiết lập] (http://stackoverflow.com/questions/10512282/android-eventhub-removemessagesint-what-107-is-not-supported-before-the-we) – Sam

Trả lời

1
WebSettings settings = webView.getSettings(); 
settings.setPluginState(PluginState.ON); 

Điều này làm việc cho tôi trong ICS.

+1

Cảm ơn câu trả lời của bạn, nhưng nó cũng không sửa lỗi này trong trường hợp của tôi: -s – anticafe

Các vấn đề liên quan