Вопрос

Мое приложение пытается установить APK.

Intent installIntent = new Intent(Intent.ACTION_INSTALL_PACKAGE);
installIntent.setData(Uri.fromFile(new File(pathToApk)));
installIntent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true);
installIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
installIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
((Activity)context).startActivityForResult(installIntent, Constants.APP_INSTALL_REQUEST);

В моей деятельности

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
        case Constants.APP_INSTALL_REQUEST:
            if(resultCode == RESULT_OK){
                Log.e(TAG, "Package Installation Success");
            }else if(resultCode == RESULT_FIRST_USER){
                Log.e(TAG, "Package Installation Cancelled by USER");
            }else{
                Log.e(TAG, "Something went wrong - INSTALLATION FAILED");
            }

Когда моя стартовая деятельность запускается, моя деятельность мгновенно получает код результата 0, который соответствует result_cancelled, в то время как системный пользовательский интерфейс все еще ждет разрешения пользователя.

enter image description here

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

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

Это было полезно?

Решение

Нашел виновника.

*installIntent.setFlags (intent.flag_activity_new_task);*

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

Спасибо

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top