2012-06-11 1 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, поскольку прочитанный файл имеет всего несколько байтов, но было бы лучше использовать его. Создание public serverVersion также зависит от вас. Если вы собираетесь проверить версию сервера на версию вашего приложения в том же методе, тогда нет необходимости. Но если вы собираетесь сравнивать версии в отдельном методе, вам нужно будет сделать это общедоступным. –

+0

Мне нужно положить его в AsyncTask из-за 'android.os.NetworkOnMainThreadException', но спасибо в любом случае! –

0

Как насчет использования JSON вместо этого? Разборчивость - это легко, намного проще (IMHO), чем анализировать xml, если у вас есть проблемы с этим.

Или вы просто используете простую строку для этих данных, так как она неструктурирована.

Смежные вопросы