Zainstaluj apk programowo na Androidzie

Próbowałem uzyskać aplikację na Androida, aby zainstalować apk na sdcard programowo, ale mam małe problemy.

Tak to robię:

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

Teraz, gdy Działa ok, przynosi menedżera pakietów i mogę kontrolować, co zrobić, gdy menedżer zakończy instalację APK.

Ale problem, który mam jest to, że jeśli na końcu instalacji użytkownik kliknie na "Open" zamiast "Done" metoda" OnActivityResult" nie jest wywoływana, ponieważ kierownik nadal istnieje.... a to przedstawia kolejny problem dotyczący innego wymogu w systemie.

Czy istnieje sposób, aby dowiedzieć się, kiedy użytkownik wybrał opcję "Otwórz" na końcu menedżera pakietów, czy może istnieje sposób, aby zmusić menedżera do wyświetlania tylko tych przycisków, które chcę, aby wyświetlał?

Naprawdę przydałaby się pomoc, szukałem wszędzie i nie znalazłem rozwiązania

Author: Jose R. Cruz, 2011-06-15

1 answers

Możesz dodać odbiornik do swojego AndroidManifest.xml, aby słuchać audycji, jeśli nowa aplikacja jest zainstalowana. Tak:

<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>

Klasa ta zostanie wywołana po zainstalowaniu nowego pakietu:

public class PackageReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
    // handle install event here
  }
}
 8
Author: uwe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-12 09:51:47