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);
}
});
}
Tôi gặp vấn đề tương tự. Bạn đã tìm ra bất cứ điều gì chưa? –
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
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