уведомить о завершении установки из сервиса - PullRequest
0 голосов
/ 20 октября 2011

У меня есть этот кусок кода

private void initiateInstallation() { 

        Intent intent = new Intent(Intent.ACTION_VIEW); 
        Uri uri = Uri.fromFile(new File("/sdcard/example.apk")); 
        intent.setDataAndType(uri, "application/vnd.android.package-archive");
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    } 

, что из моего сервиса устанавливает приложение с именем example.apk

Я хочу после завершения установки запустить действие, которое уведомляет пользователя об установке. Я сделал это, за исключением того, что действие появляется до завершения установки. Проблема в том, что внутри службы я не могу использовать startActivityForResult. Итак, мне нужно обойти это, чтобы я мог начать свою деятельность по уведомлению (или, например, просто распечатать что-нибудь с помощью Toast в сервисе) только ПОСЛЕ завершения установки. Я уже попробовал некоторые ответы на другие вопросы, такие как «альтернатива startActivityforResult в службах», но все же я не мог понять это. Я также поместил код, чтобы, возможно, там что-то было сделано.

Заранее спасибо ... любые предложения приветствуются.

Ответы [ 2 ]

0 голосов
/ 21 октября 2011

Ответ, данный @Pal Szasz, технически верен (насколько я знаю ;-)).

Однако, исходя из информации, приведенной в вашем вопросе, я предполагаю, что вы хотите показывать только уведомление (дальнейшие программные действия не должны выполняться). Если мои предположения верны, я с уважением посоветую вам НЕ показать такое уведомление. И вот почему:

В системе Android уже есть стандартные средства передачи уведомлений пользователю. В этом случае строка состояния покажет вам сообщение о том, что новое приложение успешно установлено (или не установлено в случае ошибки). Если вы внедрите еще один канал уведомлений, вы, скорее всего, будете путать или раздражать своих пользователей, отклоняясь от стандартного, ожидаемого поведения.

Принимая это за пределы здравомыслия, можно также утверждать, что вы в некотором смысле также способствовали бы фрагментации Android (в очень небольшом масштабе, но тем не менее).

0 голосов
/ 20 октября 2011

Вы можете прослушать трансляцию PACKAGE_ADDED: http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_ADDED

Насколько я знаю, они отправляются после завершения установки, и вы можете прослушивать их из службы.

Просто обратите внимание, что если приложение уже установлено, вы получите ACTION_PACKAGE_CHANGED (насколько я знаю).

Также вы должны знать имя пакета, а не только имя apk, так как намерение будет содержать имя пакета.

...