2013-10-27 59 views
0

這是我的第一個線程,請耐心等待。 :)在網站中搜索的Android服務

我想創建一個Android服務,搜索網站上的特定字符串。爲此,我試圖下載該網站並在html代碼中進行搜索,但應用程序在嘗試下載時總是崩潰。

有沒有人有任何想法如何做到這一點?

在此先感謝

+0

用您的logcat發佈您的代碼。 –

+0

它可能是缺乏權限,請嘗試: http://stackoverflow.com/questions/8593647/application-crashes-when-activity-starts –

+0

您是否已將該服務添加到Manifest文件? – SathMK

回答

0

我有一個similer問題,當我開始做一個Android應用程序,它可以掃描imdb.com查看電影信息。很多搜索互聯網和測試出來的東西后,我想出了這個:

import java.net.*; 
import java.io.*; 

URL url = new URL("websiteToLookAt"); 
InputStreamReader isr = new InputStreamReader(url.openStream()); 
BufferedReader bufferedReader = new BufferedReader(isr); 

String lineThatIsBeingRead = null; 
String theString; 

while((lineThatIsBeingRead = bufferedReader.readLine()) != null){ 

    if(lineThatIsBeingRead.contains("StringYouAreLookingFor")){ 
     theString = lineThatIsBeingRead; 
     break; 
    } 
} 
  • 設置要掃描
  • 第二行的網站的URL的第一行打開一個互聯網,讓你直接訪問html源
  • 第三行使得一個緩衝的閱讀器,它能夠讀取InputStreamReader給它的源
  • 第五行是緩存的閱讀器檢查它是否包含正確的字符串時,當前HTML源代碼行被保存的字符串。 (string1.contains(字符串2)着眼於羯羊或不字符串2中字符串1例如:String myName = "john";如果你要測試是否myName.contains("oh");它會返回true)
  • 第六行是,你會把你的字符串的字符串正在尋找HTML源代碼(例如,如果您正在尋找電影名稱,這將是您要分配名稱的字符串)
  • while循環每隔一段時間讀取html源代碼的下一行循環重新開始並將它剛剛讀取的行設置爲字符串變量lineThatIsBeingRead。只要有新的線路要閱讀,它會一直這樣做。當緩衝閱讀器到達HTML源代碼的末尾時,while循環的條件返回false,並打破循環。
  • 的,如果statment檢查是否lineThatIsBeingRead有串StringYouAreLookingFor在裏面。如果是這樣,它將theString(你正在尋找的字符串)設置爲lineThatIsBeingRead(緩衝閱讀器中的字符串),然後它打破while循環。否則,它會重置while循環,並重新開始。

我有可變theString在那裏,因爲我一直在尋找幾個字符串,但如果你只需要找到一個字符串,你可以刪除線6 & 11,只是有lineThatIsBeingRead爲您指定的字符串你正在尋找的字符串。

另一件要記住的事情是,java不允許你通過UI線程連接到互聯網(java希望你這麼做的方式是有意圖的,所以當你發佈應用程序時記得把它拿出來並使其運行在意圖上)。但是如果你添加到onCreate()方法

if(BuildVERSION.SDK_INT >= 9){ 
    StrickMode.ThreadPolicy Policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 

    StrictMode.setThreadPolicy(Policy); 
} 

它將繞過該規則。

希望這有助於您的項目,祝您好運!