package info.guardianproject.securereaderinterface.installer; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import android.content.Context; import android.content.Intent; import android.net.Uri; public class APKInstaller { public static int APK_INSTALL_CODE = 1; Context applicationContext; public APKInstaller(Context _context) { applicationContext = _context; } public void installAPK(int apk) { try { String tempFileName = "apktoinstall.apk"; InputStream in = applicationContext.getResources().openRawResource(apk); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int size = 0; byte[] buffer = new byte[1024]; while((size = in.read(buffer,0,1024)) >= 0) { baos.write(buffer,0,size); } in.close(); FileOutputStream fout = applicationContext.openFileOutput(tempFileName, Context.MODE_WORLD_READABLE); fout.write(baos.toByteArray()); fout.close(); File tempFile = applicationContext.getFileStreamPath(tempFileName); tempFile.setReadable(true); installAPK(tempFile); } catch (Exception ex) { ex.printStackTrace(); } } public void installAPK(File apkFile) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive"); //applicationContext.startActivityForResult(Intent.createChooser(intent, "install"), APK_INSTALL_CODE); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); applicationContext.startActivity(Intent.createChooser(intent, "install")); } }