Install Android APK programmatically
June 30, 2011 12:36:26 Last update: July 01, 2011 09:43:54
- Code
public void install(View view) { String url = urlField.getText().toString(); Log.d("InstallApp", "install: " + url); Intent intent = new Intent(); intent.setAction(android.content.Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse(url), "application/vnd.android.package-archive"); // intent // .setData(Uri.parse(url)) // .setType("application/vnd.android.package-archive"); startActivity(intent); }
- Screenshots:
- Logcat:
D/InstallApp( 338): install: file:///sdcard/GetApplicationVersion-debug.apk I/ActivityManager( 60): Starting activity: Intent { act=android.intent.action.VIEW dat=file:///sdcard/GetApplicationVersion-debug.apk typ=application/vnd.android.package-archive cmp=com.android.packageinstaller/.PackageInstallerActivity } I/ActivityManager( 60): Start proc com.android.packageinstaller for activity com.android.packageinstaller/.PackageInstallerActivity: pid=345 uid=10026 gids={} I/PackageParser( 345): com.android.appinfo: compat added android.permission.WRITE_EXTERNAL_STORAGE android.permission.READ_PHONE_STATE I/ActivityManager( 60): Displayed activity com.android.packageinstaller/.PackageInstallerActivity: 1109 ms (total 1109 ms) I/ARMAssembler( 60): generated scanline__00000077:03515104_00000000_00000000 [ 33 ipp] (47 ins) at [0x2ef038:0x2ef0f4] in 5285633 ns
- Using
http://...as the URI for the APK does not work. Android fails to find a handler for the intent (logcat):No Activity found to handle Intent { act=android.intent.action.VIEW dat=http://localhost/hello.apk typ=application/vnd.android.package-archive }
Therefore, download the APK to sdcard then fire the Intent.