2012-06-18 2 views
0

Я пытался реализовать план обновления для своего приложения для Android, которое не будет выпущено на рынке Android.Ошибка анализа паролей Android во время обновления приложения

Планируемая работа приложения поток выглядит следующим образом:

  1. Пользователь проверяется при входе в систему, а основная деятельность меню запускается.
  2. Запрос отправляется из главного меню на мой сайт для значение последней версии (Stor в базе данных SQL на сервере).
  3. Значение возвращаемой версии кода сравнивается с кодом версии значения apk, установленного на устройстве.
  4. Если значение возвращаемой версии кода отличается, то новый файл apk, который находится на , загружен и установлен на сервере.

Также важно обеспечить выполнение следующих задач до того, как рабочий процесс обновления будет работать.

  1. Новая версия APK должен быть скомпилирован опалена для выпуска с обновленным значением VersionCode
  2. Значение, хранящееся в базе данных сайта для значения VersionCode должно быть обновлено
  3. Вновь скомпилированный файл APK должен быть вывешивается в нужное место на веб-сервере

Я реализовал первые три этапа моего рабочего потока, но когда я пытаюсь реализовать четвертую часть, я получаю «Ошибка анализа»: существует проблема, анализирующая пакет ".

Ниже приведен код обижая:

protected void upgradeApplication() { 
    StringBuilder urlBuilder = new StringBuilder(getString(R.string.website_ip) + "/" + getString(R.string.application_middleware) + "/" + getString(R.string.apk_folder) + "/"); 

    File file = new File(urlBuilder.toString(), getString(R.string.apk_file)); 

    Intent intent = new Intent(Intent.ACTION_VIEW); 

    intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive"); 

    startActivity(intent); 
} 

Я проверил, что APK будет правильно установить скачав APK напрямую, хотя устройства веб-браузер и установка его из папки загрузки. Но когда я пытаюсь установить из приложения, я получаю сообщение об ошибке.

«Parse Error: Существует aproblem разбора пакета»

Любая помощь будет оценена

+0

вы хранить его в getFileDir? –

+0

Вы имеете в виду хранение apk? Я заставил приложение использовать внутреннюю память только потому, что я не могу быть уверен, что у пользователей будет установлен SD-карта. –

+0

Также я подумал, что следующая строка кода вытащит файл с веб-сайта. 'File file = new File (urlBuilder.toString(), getString (R.string.apk_file));' где urlBuilder содержит ссылку на файл apk –

ответ

1

Если с этой линией

File file = new File(urlBuilder.toString(), getString(R.string.apk_file)); 

вы пытаетесь загрузить файл, пропуская url как аргумент, то это не сработает. Конструктор File не может загрузить файл.

Вы должны use an AsyncTask загрузить apk, подождать, прежде чем это будет сделано, только вы можете установить его.

+0

Приветствия Далмас, вероятно, где я ошибся –

+0

Привет, Dalmas. Я внедрил Async Task, как показано в ссылке, которую вы предоставляете, и все кажется работайте правильно, но я все равно получаю ошибку Parse в конце. Глядя в файл журнала, я получаю следующую ошибку: Не удалось открыть zip '/data/data/uk.estrix.android.m3sms/files/Mobile M3 SMS Sales Automation': Permission denied. Я могу опубликовать весь файл журнала, если это необходимо. –

1

Если вы храните файл .apk в частной внутренней памяти, тогда ему необходимо разрешение Context.MODE_WORLD_READABLE.

Ниже фрагмент поможет вам.

String outFileName = path+"/<Application_Name>.apk"; 
OutputStream myOutput = openFileOutput("<Application_Name>.apk", Context.MODE_WORLD_READABLE); 

А затем установить его,

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(new File(path+"/<Application_Name>.apk")), "application/vnd.android.package-archive"); 
startActivity(intent); 
+0

Привет, Vipul Я попытался добавить вас на личную книгу (Iain Blackwood) Я хотел кое-что уточнить о местоположениях путей во внутренней памяти –

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