Установить APK программно - PullRequest
1 голос
/ 04 ноября 2011

Я пытаюсь реализовать функцию AUTOUPDATE в моем приложении для Android, так как это пользовательское приложение, которое не публикуется на Android Market. Пока у меня все работает, однако android пытается установить приложение и говорит: «APPLICATION NOT INSTALLED». Я не знаю, если это важно, но приложение уже на устройстве, так что это обновление.

Приложение загружает APK-файл из Интернета и сохраняет его на SD-карте. Чем я это делаю:

    Uri packageURI = Uri.parse("package:my_package");
    Intent intent = new Intent(Intent.ACTION_VIEW, packageURI);
    intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/download/" + ApkName)), 
            "application/vnd.android.package-archive");
    startActivity(intent);  

Ответы [ 2 ]

3 голосов
/ 04 ноября 2011

Вот фрагмент кода, который я использую, он выглядит в основном так же, как ваш, единственное отличие, которое я вижу, это использование packageURI. Я не знаю, если использование packageURI приведет к тому, что оно не будет работать, но на вашем месте я бы попробовал без него.

File appFile = new File(ScreenSaverActivity.this.getFilesDir() + File.separator + APPLICATION_FILE_NAME);
Intent installIntent = new Intent(Intent.ACTION_VIEW);
installIntent.setDataAndType(Uri.fromFile(appFile),"application/vnd.android.package-archive");
startActivity(installIntent);

Однако, как правило, когда вы видите сообщение «Приложение не установлено» при попытке установить его, это означает, что подпись, используемая для подписи 2 apk, была другой, то есть одна подписана ключом разблокировки, другая подписана ключом отладки. Или, может быть, если 2 apks были скомпилированы на разных компьютерах, вы подписали их с 2 разными ключами отладки.

Обратите внимание, что даже если вы не распространяете через рынок, вам все равно нужно создать и подписать ваше приложение. Срок действия ключа отладки истекает через 1 год, и ваше приложение перестанет работать после истечения срока действия ключа.

0 голосов
/ 04 ноября 2011

1) Проверьте, совпадает ли имя приложения, указанное в файле манифеста, как и раньше.

2) Полагаю, вам может потребоваться получить дополнительную информацию о пакете для соответствия.Особенно, если приложение построено на другой машине, подпись может отличаться (я не уверен на 100% в этом).Также, если вы используете Eclipse.В разделе «Выполнить настройку» проверьте, указано ли имя пакета, совпадает ли оно с именем, использованным для первоначального выпуска.

...