2015-11-04 4 views
1

Я использую следующий код для установки приложения из своего приложения.Установите обновленный Apk из того же самого приложения программно. [Update apk]

Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/InstallTest.apk")), "application/vnd.android.package-archive"); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 

Дайте пакет для вышеуказанного кода com.xyz.one. Теперь, если я устанавливаю какое-либо другое прикладное приложение с указанным кодом, оно работает нормально. Но если я попробую тот же код для обновленной версии apk того же приложения, то есть com.xyz.one, тогда он дает «Проблема заключается в разборе пакета».

Кто-нибудь, пожалуйста, помогите, как я могу установить apk программно из одного и того же самого приложения.

Примечание. Мое обновление apk присутствует во внешнем хранилище.

Благодаря

+0

Вы пытались установить apk вручную? –

+0

@DhavalPatel да вручную устанавливается. –

ответ

0

Вы пробовали с помощью действия ACTION_INSTALL_PACKAGE?

Вы можете использовать его для запуска программы установки напрямую и использовать несколько аргументов для управления файлом apk и параметрами установки.

(EXTRA_INSTALLER_PACKAGE_NAME, EXTRA_NOT_UNKNOWN_SOURCE, EXTRA_ALLOW_REPLACE и EXTRA_RETURN_RESULT)

+0

Я уже пробовал это, но, похоже, не работает. –

0

Ниже код отлично работает для меня, я думаю, вы можете пропустить этот файл : // префикс

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.parse("file://"+path), "application/vnd.android.package-archive"); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
0

Если у вас есть файл локального в телефоне или вы можете скачать до программно:

Intent intent = new Intent(Intent.ACTION_VIEW); 

     intent.setDataAndType(
      Uri.fromFile(
         new File(Environment.getExternalStorageDirectory() + "/download/" + "NameOfFille.apk") 
      ), "application/vnd.android.package-archive"); 

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent);