2012-06-11 85 views
0

我正在爲我的工作場所製作一個簡單的巴士時間表應用程序,而且人們對此感興趣,但我不想大量發送電子郵件給所有人以進行簡單更新。現在我正在尋找具有最新版本信息的XML文件,並在啓動時對其進行解析,然後僅顯示一個alertdialog進行更新,但是,我無法讓SAX工作,我可能會看到DOM解析器但兩者似乎都是一種過度複雜的方式來獲得單一價值。通知用戶非市場應用更新的最佳方式?

從字面上看,這是所有的XML包含:

<newversion>1.2</newversion> 

有另一種方式?

謝謝。

回答

1

你真的不需要這樣做。你可以簡單地在服務器上放置一個文本文件,甚至可以免費託管一個文件。每當您更新應用程序時,將文件的內容更新爲版本號。每次您的應用程序啓動時,它都可以讀取文件的內容。由於它只包含版本號,因此您可以直接將其與您應用的當前版本進行比較。如果當前版本號小於文件中的版本號,請爲用戶提供更新通知。以下是獲取文件內容的基本代碼:

 InputStream is = new URL("http://<my_server>/version.txt").openStream(); 
     BufferedReader in = new BufferedReader(new InputStreamReader(is)); 
     String serverVersion = in.readLine(); 
     in.close(); 
     if (serverVersion.isEmpty()) 
     { 
      //couldn't get the file. Do some error management here. 
     } 
+0

對,所以堅持這個在AsyncTask或一個單獨的類,並使serverVersion公開? –

+0

這真的取決於你。就我個人而言,我已將這些代碼放在checkForUpdate()方法中,並且在應用程序啓動時調用一次,並從「檢查更新」菜單選項中調用一次。我並沒有對AsyncTask感興趣,因爲正在讀取的文件只有幾個字節大小,但使用一個更好。 使serverVersion公開也取決於你。如果您打算使用相同的方法檢查服務器版本與您應用的版本,則不需要。但是,如果您要用單獨的方法比較版本,那麼您需要將其公開化。 –

+0

因爲'android.os.NetworkOnMainThreadException',我必須把它放在一個AsyncTask中,不過謝謝! –

0

如何使用JSON代替?解析它很容易,比解析xml更簡單(恕我直言),如果你有問題。

或者你只是使用簡單的字符串來處理這些數據,因爲它是非結構化的。

相關問題