下载完成后如何使apk自动安装



嗨,伙计们想知道我是否可以使用一些代码,以便在下载完成后使应用程序自动安装?

我的应用程序有一个下载部分。我正在使用谷歌云端硬盘来处理下载。但是我遇到了某些设备的问题。所以我决定离开谷歌

我现在使用媒体火作为我的主机。我的应用使用直接下载。但它总是使用下载管理器下载。我希望它做的更像是Google云端硬盘如何直接下载。它给了我下载完成后立即安装的选项。我现在已经用这几行代码解决了这个问题

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new 
File(Environment.getExternalStorageDirectory() + "/download/" + "app.apk")), 
"application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

有没有办法在下载文件之前检查下载文件夹。 如果文件已经存在,请安装如果没有下载到网页。 相反,它说解析错误,然后转到网页或多次下载同一文件。

一如既往地提前感谢。

下载完成后,您可以获取下载的Uri,因此不必指定要保存的文件名。如果您使用 DownloadManager ,下面是一个简单的示例。

    final DownloadManager downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
    DownloadManager.Request request = new DownloadManager.Request(Uri.parse("http://remotehost/your.apk"));
    final long id = downloadManager.enqueue(request);
    BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE)) {
                Intent installIntent = new Intent(Intent.ACTION_VIEW);
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                    installIntent.setDataAndType(downloadManager.getUriForDownloadedFile(id),
                            "application/vnd.android.package-archive");
                } else {
                    Cursor cursor = downloadManager.query(new DownloadManager.Query().setFilterById(id));
                    try {
                        if (cursor != null && cursor.moveToFirst()) {
                            int status = cursor.getInt(cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_STATUS));
                            String localUri = cursor.getString(cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_LOCAL_URI));
                            if (status == DownloadManager.STATUS_SUCCESSFUL) {
                                installIntent.setDataAndType(Uri.parse(localUri), "application/vnd.android.package-archive");
                            }
                        }
                    } finally {
                        if (cursor != null) {
                            cursor.close();
                        }
                    }
                }
                installIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.sendBroadcast(installIntent);
            }
        }
    };
    registerReceiver(broadcastReceiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

相关内容

  • 没有找到相关文章

最新更新