jsoup没有在android上工作

时间:2013-08-15 04:32:41

标签: android jsoup

我在android上遇到了jsoup的问题。我已经看过其他帖子,并尝试了那里建议的解决方案(重新添加罐子,调用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;     import 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();
        }

    }

3 个答案:

答案 0 :(得分:1)

您正在尝试在主线程中运行连接。使用AsyncTask即可使用。


public class JsoupParser extends AsyncTask...

为什么你必须在android中使用AsyncTask进行网络连接?

AsyncTask是一个抽象的助手类,它使您能够正确地使用UI线程,同时在不同的线程中执行后台操作,而无需真正处理线程或控制器。由于android是使用单线程模型实现的,因此每次启动应用程序时,都会创建一个新线程。

想象一下,您有一个单一的线程模型,您只需按一下按钮就可以使用Jsoup解析网站。这在earler android版本中可以正常工作,但是在网络操作完成之前你会有一个无响应的屏幕。 AsyncTask将在后台运行,使您的屏幕仍能响应,而另一个线程负责网络通信。

查看API:
AsyncTask
NetworkOnMainThreadException

答案 1 :(得分:1)

在你的正常活动中 用这个     public static int SDK_INT = android.os.Build.VERSION.SDK_INT;

并在获取Document之前 在try块中写这个             if(SDK_INT&gt; = 10){                 ThreadPolicy tp = ThreadPolicy.LAX;                 StrictMode.setThreadPolicy(TP);             }

它对我有用

答案 2 :(得分:1)

删除所有语句,如:

System.out.println(something);

它对我有用,意识到这花了我2个小时。