1. 程式人生 > >關於在android開發中使用jsoup的詳解

關於在android開發中使用jsoup的詳解

我自己在用MP3播放器的時候,利用jsoup從網上下載網頁並解析,但是發現在匯入jsoup包之後,發現出現java.lang.NoClassDefFoundError:org.jsoup.Jsoup問題  ,如下:       

http://static.oschina.net/uploads/space/2013/1213/163827_7QAv_1421789.png

我已經設定了網路許可權,後面通過查詢發現是因為ADT20以後不支援匯入Jsoup.jar包,要想繼續使用應該先將匯入的包刪了,再在自己專案的根目錄下建立libs目錄,方法如下:右鍵專案,選擇folder,在彈出的選項中輸入libs,然後直接將Jsoup.jar包移到libs中,這裡說下,我用複製黏貼不行,然後直接拖拽的,因為libs貌似不能開啟,也可能是我不知道

2.,然後執行程式,接下來會出現android.os.NetworkOnMainThreadException錯誤,這個錯誤是4.0之後在主執行緒裡面執行Http請求都會報這個錯誤,這個錯誤的解決方法如下:將jsoup的哪些程式碼放在一個執行緒中,如我自己寫的 class DownListener implements OnClickListener{

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            new Thread(downloadRun).start();
        }
        
    }
    Runnable downloadRun = new Runnable(){  
          
        @Override  
        public void run() {  
            // TODO Auto-generated method stub  
            DownLoad download=new DownLoad();
            String geci=download.Download();
            System.out.println("geci:"+geci);
        }  
          };  
    
}

這是在activity中的程式碼一部分,DownLoad這個類是自己寫的,這個類中存放的就是jsoup的程式碼,如果直接在監聽器調中寫   DownLoad download=new DownLoad();  String geci=download.Download();,就會出現這個錯誤,需要放在一個執行緒中,程式碼如上,再次執行程式就好了,在這裡特別說下,一定要記得在AndroidManifest.xml中宣告訪問網路許可權,這樣應該就不會有問題了。