<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
//get destination to update file and set Uri //TODO: First I wanted to store my update .apk file on internal storage for my app but apparently android does not allow you to open and install //aplication with existing package from there. So for me, alternative solution is Download directory in external storage. If there is better //solution, please inform us in comment String destination = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/"; String fileName = "AppName.apk"; destination += fileName; final Uri uri = Uri.parse("file://" + destination); //Delete update file if exists File file = new File(destination); if (file.exists()) //file.delete() - test this, I think sometimes it doesnt work file.delete(); //get url of app on server String url = Main.this.getString(R.string.update_app_url); //set downloadmanager DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); request.setDescription(Main.this.getString(R.string.notification_description)); request.setTitle(Main.this.getString(R.string.app_name)); //set destination request.setDestinationUri(uri); // get download service and enqueue file final DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); final long downloadId = manager.enqueue(request); //set BroadcastReceiver to install app when .apk is downloaded BroadcastReceiver onComplete = new BroadcastReceiver() { public void onReceive(Context ctxt, Intent intent) { Intent install = new Intent(Intent.ACTION_VIEW); install.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); install.setDataAndType(uri, manager.getMimeTypeForDownloadedFile(downloadId)); startActivity(install); unregisterReceiver(this); finish(); } }; //register receiver for when .apk download is compete registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
References
https://stackoverflow.com/questions/4967669/android-install-apk-programmatically
https://stackoverflow.com/questions/39147608/android-install-apk-with-intent-view-action-not-working-with-file-provider/40131196#40131196