Tôi có một số tiện ích WebView
bên trong Activity
. Tôi sử dụng loadData()
để đặt nội dung và html này chứa liên kết. Một số của tôi WebViews
hoạt động tốt, khi tôi nhấp vào liên kết, trình duyệt web được bắt đầu trong một cửa sổ mới, nhưng một số làm cho ứng dụng của tôi gặp sự cố khi tôi nhấp vào liên kết.Android WebView gặp sự cố khi nhấp vào liên kết
10-13 08:45:24.257: ERROR/AndroidRuntime(751): Uncaught handler: thread main exiting due to uncaught exception
10-13 08:45:24.308: ERROR/AndroidRuntime(751): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
10-13 08:45:24.308: ERROR/AndroidRuntime(751): at android.app.ApplicationContext.startActivity(ApplicationContext.java:627)
10-13 08:45:24.308: ERROR/AndroidRuntime(751): at android.content.ContextWrapper.startActivity(ContextWrapper.java:236)
10-13 08:45:24.308: ERROR/AndroidRuntime(751): at android.webkit.CallbackProxy.uiOverrideUrlLoading(CallbackProxy.java:185)
10-13 08:45:24.308: ERROR/AndroidRuntime(751): at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:277)
10-13 08:45:24.308: ERROR/AndroidRuntime(751): at android.os.Handler.dispatchMessage(Handler.java:99)
10-13 08:45:24.308: ERROR/AndroidRuntime(751): at android.os.Looper.loop(Looper.java:123)
10-13 08:45:24.308: ERROR/AndroidRuntime(751): at android.app.ActivityThread.main(ActivityThread.java:3948)
10-13 08:45:24.308: ERROR/AndroidRuntime(751): at java.lang.reflect.Method.invokeNative(Native Method)
10-13 08:45:24.308: ERROR/AndroidRuntime(751): at java.lang.reflect.Method.invoke(Method.java:521)
10-13 08:45:24.308: ERROR/AndroidRuntime(751): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
10-13 08:45:24.308: ERROR/AndroidRuntime(751): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
10-13 08:45:24.308: ERROR/AndroidRuntime(751): at dalvik.system.NativeStart.main(Native Method)
Dường như có một vấn đề với Intent
rằng WebView
cháy khi tôi nhấp vào URL, nhưng tôi không có quyền kiểm soát Intent
này, tôi nghĩ.
Có ai có ý tưởng nào không?
tôi sử dụng AsyncTask
này để thiết lập các nội dung trong WebView
, và nó hoạt động tốt:
public class SetAdTask extends AsyncTask<Void, Void, String>{
private Main main;
private WebView webView;
public SetAdTask(Main main, WebView webView){
this.main = main;
this.webView = webView;
}
protected void onPreExecute() {
Main.Log("onPreExecute()");
}
protected String doInBackground(Void... params) {
Main.Log("doInBackground()");
return main.getRestClient().getAdCode();
}
protected void onPostExecute(String result) {
Main.Log("onPostExecute()");
String html = "<html><head><title>ad</title></head><body>";
html += "<div style=\"color:grey;font-size:12px;\">ADVERTISEMENT<br/>";
html += result;
html += "</body></html>";
webView.loadData(html, "text/html", "latin-1");
}
}
Ồ, tôi đã tìm thấy sự cố .. Tôi đã khởi tạo webView với ngữ cảnh sai ... tôi đã sử dụng viewView = new WebView (main.getApplicationContext()) ... Có vẻ như webview hiển thị OK, với ngữ cảnh này, nhưng không thể xử lý ý định chính xác ... T –
Bạn có thể trả lời câu hỏi của riêng mình, bạn biết đấy. –