2012-01-09 9 views
7

私は、JsoupのWebサイトにあるJsoup.connect()の例を試してみました。Jsoup.connect()は、AndroidではなくJavaで動作します。

私はAndroidManifestにインターネットアクセス許可を許可していても何らかの理由でAndroid Projects(Eclipse)で動作させることができません。 Jsoupライブラリが正しくインストールされていて、問題なくJsoup.parse()を使用できます。ここではJavaで動作するコードのいくつかの行と、AndroidManifestの許可もあります。

のJava

public static void main(String[] args){ 
    Document doc; 
    try { 
     doc = Jsoup.connect("http://google.ca/").get(); 
     String title = doc.title(); 
     System.out.print(title); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

のAndroidManifest.xml

<uses-sdk android:minSdkVersion="12" /> 
<uses-permission android:name="android.permission.INTERNET"/> 
<application 

私はそれを実行しようとすると、それがクラッシュすると、ログは言う:

01-09 20:19:30.560: E/AndroidRuntime(26839): java.lang.RuntimeException: 
Unable to start activity 
ComponentInfo{com.mrdroidinator.com/com.mrdroidinator.com.Parselhjmq}: android.os.NetworkOnMainThreadException 
+0

これは、あなたが新しいスレッドを起動する方法ですか? – ethan

+0

致命的な例外メイン – user1139012

+0

01-09 20:19:30.560:E/AndroidRuntime(26839):java.lang.RuntimeException:アクティビティを開始できませんComponentInfo {com.mrdroidinator.com/com.mrdroidinator.com.Parselhjmq}:アンドロイド。 os.NetworkOnMainThreadException – user1139012

答えて

16

http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html

問題は、APIレベル11+で禁止されているメインスレッドでネットワーク操作を実行していることです。これは、UIを実行すると、ドキュメントのダウンロードが完了するまでUIが「フリーズ」するため、UIのパフォーマンスに影響を与えない別のスレッドでそのような操作を実行する必要があるからです。ログが何を言ってん

Thread downloadThread = new Thread() { 
    public void run() { 
    Document doc; 
    try { 
     doc = Jsoup.connect("http://google.ca/").get(); 
     String title = doc.title(); 
      System.out.print(title); 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } 
    } 
}; 
downloadThread.start(); 
関連する問題