2016-04-28 16 views
0

facebook.comをカスタムCSSを使用してwebviewに読み込み、いくつか変更します。私はjsoupを使用しますが、私はクラッシュするアプリを起動するたびに。カスタムCSS(jsoup)を使用したAndroidスタジオWebview

@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出力

致命的な例外:メインプロセス:com.example.name.firstapp、PID:23936 れるjava.lang

は、ここに私のコードです。 RuntimeException:アクティビティを開始できません ComponentInfo {com.example.name.firstapp/com.example.name.firstapp.MainActivity}: android.os.NetworkOnMainThreadExcept android.app.ActivityThread.-wrap11(ActivityThread.java)ATで android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)で android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) におけるイオン android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1344) android.os.Handler.dispatchMessage(Handler.java:102)at android.os.Looper.loop(Looper.java:148)at のandroid.app.ActivityThread.main(ActivityThread.java:5417) のjava.lang.reflect.Method.invoke(ネイティブメソッド)com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java: 726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)C java.net.InetAddressでjava.net.InetAddress.lookupHostByName(InetAddress.java:431)で android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273) でandroid.os.NetworkOnMainThreadException:によって をaused で com.android.okhttp.internal.Network $ 1.resolveInetAddresses(Network.java:29) で java.net.InetAddress.getAllByName(InetAddress.java:215)で.getAllByNameImpl(InetAddress.java:252)COM com.android.okhttpで.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:157)で(RouteSelector.java:188) .internal.http。 com.android.okhttp.internal.http.HttpEngine.nextConnectionで com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:357) でRouteSelector.next(RouteSelector.java:100) ( HttpEngine.java:340) com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330) で でcom.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java: com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433) における248) com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114) でで com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:89) でcom.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java) org.jsoup.helperで.HttpConnection $ Response.execute(HttpConnection.java:563) を にします。org.jsoup.helper.HttpConnection $ Response.execute(HttpConnection.java:540) を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) android.app.Activity。 performCreate android.app.ActivityThreadでandroid.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)で android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)で(Activity.java:6237) 。 handleLaunchActivity(ActivityThread.java:2476)android.os.Handler.dispatchMessageで android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1344) でandroid.app.ActivityThread.-wrap11(ActivityThread.java)で (Handler.java:102)(ActivityThread.java:5417)at java.lang.reflect.Method.invoke(ネイティブメソッド)at com。 com.android.internal.os.ZygoteInit.mainでandroid.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) (ZygoteInit.java:616)

+0

あなたのlogcatを投稿する –

+0

@NoumanGhaffarここにあります:https://justpaste.it/tqq9 – Droid

答えて

0

あなたがでネットワークに接続されていますメイン(UI)スレッドだからあなたはandroid.os.NetworkOnMainThreadExceptionを取得します。

Androidシステムでは、UIスレッドをブロックするので、これを許可しません。そのため、AsyncTaskやIntentServiceなどのバックグラウンドスレッドを使用してネットワークにアクセスしてください。

+0

これは完全に新しいアンドロイドスタジオなので、カスタムCSSでライブウェブサイトを読み込むためのより良い解決策でしょうか? @DineshBob – Droid

+0

Jsoup.connect( "https://www.facebook.com").get() - ネットワークに接続します。この行をAsyncTaskに移動します。 http://www.androidbegin.com/tutorial/android-basic-jsoup-tutorial/このリンクを確認してください。 – Bob

関連する問題