1

Androidのjsoupに問題があります。私は他の投稿を見て、そこで提案された解決策を試しました(jarの再追加、Android修正ツールの呼び出しなど)。

jsoup jar を Android プロジェクトに (ビルド パスを使用して) 追加し、必要なインターネット アクセス許可をマニフェストに追加しました。

<uses-permission android:name="android.permission.INTERNET" />

しかし、アプリケーションを実行しようとすると、メソッドcom.example.test.MainActivity.onCreateから参照されたメソッドorg.jsoup.Jsoup.connectが見つかりませんでした

Android修正ツールを使用しようとしましたが、問題は解決しませんでした。私が持っているのは主な活動だけで、電話をかけようとしています

Document doc = Jsoup.connect("http://en.wikipedia.org/").get();

添付は私のコード import org.jsoup.Jsoup; の一部です。org.jsoup.nodes.Document をインポートします。

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        try {
            Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
4

3 に答える 3

1

通常のアクティビティでは、これを使用します

public static int SDK_INT = android.os.Build.VERSION.SDK_INT;

ドキュメントをフェッチする前に、これを try ブロック内に書き込みます

if (SDK_INT >= 10) {
    ThreadPolicy tp = ThreadPolicy.LAX;
    StrictMode.setThreadPolicy(tp);
}

それは私のために働いた

于 2013-08-15T10:32:19.863 に答える
1

次のようなすべてのステートメントを削除します。

System.out.println(something);

これには2時間かかったことに気づきました。

于 2016-03-03T21:21:29.403 に答える
1

メインスレッドで接続を実行しようとしています。使用するAsyncTaskと動作します。


IE

public class JsoupParser extends AsyncTask...

AsyncTaskAndroidでネットワーク接続に使用する必要があるのはなぜですか?

AsyncTask は、スレッドやコントローラーを実際に処理することなく、別のスレッドでバックグラウンド操作を実行しながら、UI スレッドを正しく使用できるようにする抽象ヘルパー クラスです。android はシングル スレッド モデルを使用して実装されているため、アプリケーションを起動するたびに新しいスレッドが作成されます。

ボタンをクリックするだけで を使用して Web サイトを解析するシングル スレッド モデルがあるとしますJsoup。これは、ネットワーク操作が完了するまで応答しない画面が表示されていたとしても、以前の Android バージョンでは正常に機能していました。はAsyncTaskバックグラウンドで実行され、別のスレッドがネットワーク通信を処理している間、画面の応答性を維持できます。

API を見てみましょう:
AsyncTask
NetworkOnMainThreadException

于 2013-08-15T04:41:17.970 に答える