Установить APK программно на Android - PullRequest
6 голосов
/ 15 июня 2011

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

Вот как я это делаю:

Intent intent = new Intent(Intent.ACTION_VIEW);           
intent.setDataAndType("ApkFilePath...","application/vnd.android.package-archive");
activity.startActivityForResult(intent,5000);

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

Но проблема, с которой я столкнулся, заключается в том, что если в конце установки пользователь нажимает «Открыть» вместо «Готово», то метод «OnActivityResult» не вызывается, так как менеджер все еще существует .... и это представляет еще одну проблему в отношении другого требования к системе.

Есть ли способ узнать, когда пользователь выбрал «Открыть» в конце диспетчера пакетов, или есть способ заставить диспетчер отображать только те кнопки, которые я хочу, чтобы он отображал?

Действительно мог бы воспользоваться помощью, я искал везде и, похоже, не нашел решения

1 Ответ

8 голосов
/ 07 июля 2011

Вы можете добавить приемник к вашему AndroidManifest.xml для прослушивания трансляций, если установлено новое приложение.Например:

<receiver android:name=".PackageReceiver">
    <intent-filter>
        <action android:name="android.intent.action.PACKAGE_ADDED" />
        <action android:name="android.intent.action.PACKAGE_CHANGED" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="package" />
    </intent-filter>
</receiver>

Этот класс затем вызывается при установке нового пакета:

public class PackageReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
    // handle install event here
  }
}
...