在Android下载后打开下载的文件

在Android下载后打开下载的文件,第1张

概述我有一个应用程序,其中包含一些指向Web上文件的链接.我希望在用户选择将文件下载到设备后–该文件将自动打开.这是我的下载代码:privatevoiddownloadFile(Stringurl){if(GeneralHelper.isNetworkAvailable(this)){Uriuri=Uri.parse(url);

我有一个应用程序,其中包含一些指向Web上文件的链接.我希望在用户选择将文件下载到设备后 – 该文件将自动打开.
这是我的下载代码:

private voID downloadfile(String url) {        if (GeneralHelper.isNetworkAvailable(this)) {            Uri uri = Uri.parse(url);             DownloadManager.Request r = new DownloadManager.Request(uri);            String filename = url.substring( url.lastIndexOf('/')+ 1, url.length() );            // This put the download in the same Download dir the browser uses            r.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, filename);            r.allowScanningByMediaScanner();            // Notify user when download is completed            // (Seems to be available since Honeycomb only)            r.setNotificationVisibility(DownloadManager.Request.VISIBIliTY_VISIBLE_NOTIFY_COMPLETED);            // Start download            DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);            dm.enqueue(r);        }        else {            // ....        }    }

下载完成后如何添加代码打开文件?

解决方法:

将此broadcastReceiver添加到您的代码中,并使用uri启动和意图.

    broadcastReceiver receiver = new broadcastReceiver() {        @OverrIDe        public voID onReceive(Context context, Intent intent) {            String action = intent.getAction();            if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {                long downloadID = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, 0);                DownloadManager.query query = new DownloadManager.query();                query.setFilterByID(enq);                downloadManager = (DownloadManager)getSystemService(DOWNLOAD_SERVICE);                Cursor c = downloadManager.query(query);                if (c.movetoFirst()) {                    int columnIndex = c.getColumnIndex(DownloadManager.ColUMN_STATUS);                    if (DownloadManager.STATUS_SUCCESSFul == c.getInt(columnIndex)) {                        String uriString = c.getString(c.getColumnIndex(DownloadManager.ColUMN_LOCAL_URI));                        //Todo : Use this local uri and launch intent to open file                    }                }            }        }    };    registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

当您开始下载时,进行以下更改,将’enq’声明为long类型

 enq=dm.enqueue(r);
总结

以上是内存溢出为你收集整理的在Android下载后打开下载的文件全部内容,希望文章能够帮你解决在Android下载后打开下载的文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1115153.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存