Saturday, May 5, 2018

Android Studio Webview with Custom CSS (jsoup)

I want to load facebook.com in a webview with custom CSS to change a few things. I use jsoup but everytime i start the app it crashes.


Here is my code:


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
Document doc = Jsoup.connect("https://www.facebook.com").get();
doc.head().getElementsByTag("link").remove();
doc.head().appendElement("link").attr("rel", "stylesheet").attr("type", "text/css").attr("href", "style.css");
String htmlData = doc.outerHtml();
WebView webview = new WebView(this);
setContentView(webview);
webview.loadDataWithBaseURL("file:///android_asset/.", htmlData, "text/html", "UTF-8", null);
} catch (IOException e) {
e.printStackTrace();
}
}

Logcat output



FATAL EXCEPTION: main Process: com.example.name.firstapp, PID: 23936
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.example.name.firstapp/com.example.name.firstapp.MainActivity}:
android.os.NetworkOnMainThreadException at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java) at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102) at
android.os.Looper.loop(Looper.java:148) at
android.app.ActivityThread.main(ActivityThread.java:5417) at
java.lang.reflect.Method.invoke(Native Method) at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Caused
by: android.os.NetworkOnMainThreadException at
android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273)
at java.net.InetAddress.lookupHostByName(InetAddress.java:431) at
java.net.InetAddress.getAllByNameImpl(InetAddress.java:252) at
java.net.InetAddress.getAllByName(InetAddress.java:215) at
com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)
at
com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:188)
at
com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:157)
at
com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:100)
at
com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:357)
at
com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:340)
at
com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
at
com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)
at
com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433)
at
com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114)
at
com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:89)
at
com.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java)
at
org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:563)
at
org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:540)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:227) at
org.jsoup.helper.HttpConnection.get(HttpConnection.java:216) at
com.example.name.firstapp.MainActivity.onCreate(MainActivity.java:25)
at android.app.Activity.performCreate(Activity.java:6237) at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java) at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102) at
android.os.Looper.loop(Looper.java:148) at
android.app.ActivityThread.main(ActivityThread.java:5417) at
java.lang.reflect.Method.invoke(Native Method) at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)


No comments:

Post a Comment

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...