Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中下载后无法从我的应用程序打开文件(pdf/doc)_Android_Android Fileprovider - Fatal编程技术网

在android中下载后无法从我的应用程序打开文件(pdf/doc)

在android中下载后无法从我的应用程序打开文件(pdf/doc),android,android-fileprovider,Android,Android Fileprovider,我正在从url下载文件(pf/doc)。我也有读写权限&提供程序也在清单和提供程序路径中定义 文件已成功下载到我的手机“下载”文件夹中。但当我尝试用以下代码打开文件时,会出现一个错误“无法访问此文件。请检查您的连接或缩短文件名” 附件URI-content://com.hello.provider/external_files/Download/ac_xyz-2.pdf我也无法打开文档文件 文件下载代码: if (url != null && !url.isEmpty()) {

我正在从url下载文件(pf/doc)。我也有读写权限&提供程序也在清单和提供程序路径中定义

文件已成功下载到我的手机“下载”文件夹中。但当我尝试用以下代码打开文件时,会出现一个错误
“无法访问此文件。请检查您的连接或缩短文件名”

附件URI-
content://com.hello.provider/external_files/Download/ac_xyz-2.pdf
我也无法打开文档文件

文件下载代码:

if (url != null && !url.isEmpty()) {
                val uri = Uri.parse(url)
                activity.registerReceiver(
                    attachmentDownloadCompleteReceive, IntentFilter(
                        DownloadManager.ACTION_DOWNLOAD_COMPLETE
                    )
                )
                val request = DownloadManager.Request(uri)
                request.setMimeType(getMimeType(uri.toString()))
                request.setTitle(fileName)
                request.setDescription("Downloading attachment..")
                request.allowScanningByMediaScanner()
                request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
                request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName)
                val dm = activity.getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager
                dm.enqueue(request)
            }

有没有办法解决此错误?

您正在尝试使用文件提供程序为下载文件夹中的文件建立uri

不需要

注册一个广播接收器以完成操作下载,下载完成后您将收到通知


此外,您还可以从DownloadManager获得一个很好的uri,您可以在pdf阅读器的操作视图中使用该uri。

您应该开始您的帖子,告诉我们是谁下载了该文件以及如何下载的。谁决定将其存储在该路径中?之后,您应该展示如何构建attachmentUri。目前我们不知道你在做什么。另外,请告知所用设备的Android版本。此外,还不清楚是哪个应用程序导致了您提到的错误。添加了下载文件代码。我有默认应用程序adobe acrobat打开pdfAndroid版本!我已经在关注这些事情了。我已经注册了广播接收机。我使用val downloadLocalUri=cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI))从下载管理器获取url。我现在明白了。但是为什么你要在这个uri上和你的文件提供者乱搞呢?毫无意义。按原样使用它。因为我得到了file://storage/0/download/as.pdf &我不能直接打开这个文件!这就是为什么我要把它转换成内容。。我懂了。那件事从来没有发生在我身上。那么请把你的广播接收机代码也发出来。我想看看。但是意识到……如果您不能直接打开该文件,那么让您的文件提供商尝试打开并提供该文件是没有意义的,因为它当然也无法打开该文件。
if (url != null && !url.isEmpty()) {
                val uri = Uri.parse(url)
                activity.registerReceiver(
                    attachmentDownloadCompleteReceive, IntentFilter(
                        DownloadManager.ACTION_DOWNLOAD_COMPLETE
                    )
                )
                val request = DownloadManager.Request(uri)
                request.setMimeType(getMimeType(uri.toString()))
                request.setTitle(fileName)
                request.setDescription("Downloading attachment..")
                request.allowScanningByMediaScanner()
                request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
                request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName)
                val dm = activity.getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager
                dm.enqueue(request)
            }