如何在我的应用程序中下载视频,就像我们在谷歌播放下载或安装apk文件一样?

时间:2014-09-26 05:58:24

标签: android download android-videoview

我想在背景中从URL下载视频,就像我们在Google Play的后台安装apk文件一样。我想在通知栏上显示下载指示器,就像我们下载或安装apk文件时显示的一样。如果有任何建议或想法,那么建议我如何在我的项目中完成这项任务。

2 个答案:

答案 0 :(得分:2)

你可以选择安卓DownLoadManager。在某种程度上你想在你的活动中这样做

String mUrl="your video url";

DownloadManager manager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
Request request = new Request(Uri.parse(mUrl));
            request.setDestinationInExternalFilesDir(getApplicationContext(), Environment.DIRECTORY_DOWNLOADS, your_fileName);
            request.setNotificationVisibility(Request.VISIBILITY_VISIBLE);
            request.setAllowedOverRoaming(false);
            request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE);
            manager.enqueue(request);


setNotificationVisibility() - >在通知栏(窗口)中显示下载通知以及下载进度。

下面是三种方法,您可以在其中为下载的文件路径选择目的地。
1. setDestinationInExternalFilesDir(Context context, String dirType, String subPath) 将下载文件的本地目标设置为应用程序外部文件目录中的路径(由getExternalFilesDir(String)返回。


2。 setDestinationInExternalPublicDir(String dirType, String subPath) 将下载文件的本地目标设置为公共外部存储目录中的路径(由getExternalStoragePublicDirectory(String)返回)。


3. setDestinationUri(Uri uri) 设置下载文件的本地目标。

答案 1 :(得分:0)

使用下载管理器,

private void for_call_download() {
        File folder = Environment.getExternalStoragePublicDirectory(DOWNLOAD_FOLDER_NAME);
        if (!folder.exists() || !folder.isDirectory()) {
            folder.mkdirs();
        }
        try {
            DownloadManager.Request request = new DownloadManager.Request(Uri.parse(APK_URL));
            request.setDestinationInExternalPublicDir(DOWNLOAD_FOLDER_NAME, DOWNLOAD_FILE_NAME);
            request.setTitle(SessionName);
            request.setDescription("" + SessionDesc);
            request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
            request.setVisibleInDownloadsUi(false);
            request.setMimeType("application/cn.trinea.download.file");
            downloadId = downloadManager.enqueue(request);
        } catch (IllegalStateException i) {
            showAlert(context, "Sorry Some Problem");
            i.printStackTrace();
        }
        updateView();
        status_download = true;
    }