问题标签 [android-fileprovider]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 使用 FileProvider 从内部存储共享图像
我有一些文件存储在我的应用程序的内部存储中,我想在外部应用程序中打开这些文件(例如,将图像发送到图库以供查看。)我已经设置了一个FileProvider
这样做的。
来自AndroidManifest.xml
:
来自res/xml/files.xml
:
从Fragment
我尝试打开文件的位置:
从 logcat 输出(共享到 Gallery 应用程序):
发生的事情是找到了文件,生成了一个 URI,并且正确检测了 mimetype;我从 Android 获得了准确的处理程序列表,当我选择“画廊”时,画廊活动被启动,但它直接进入设备自己的画廊——没有错误消息,也没有打开的图像。这种行为似乎与其他图像查看器一致 - 例如 G+ 照片。
真正奇怪的是,如果我使用声明的 Intent ACTION_SEND 执行相同的代码,该文件会正确附加到 Gmail 中的电子邮件。(事实上,这就是我对应用程序的内部日志所做的事情。)所以我似乎不太可能错误地格式化内容 URI。我最好的猜测是我使用了错误的 Intent 操作?但我不知道有什么比 ACTION_VIEW 更好。
有任何想法吗?
android - 文件提供程序 - 即使在自己的应用程序中也无法访问文件
我正在实现一个File Provider,仔细遵循文档但无法使用应用程序本身的文件或共享任何文件。
添加清单,为目录共享创建 xml 文件,生成内容 uri,授予 uri 权限,尝试与缓存、外部、内部目录共享文件,但没有任何效果。
搜索了网络,但没有发现代码中缺少任何内容。
下面是代码:
显现:
文件路径.xml
GetUri:
访问pdf文件的代码:
访问图像的代码:
请帮助我找出哪里出错了,甚至无法在我自己的应用程序中使用这些文件。
提前致谢。
java - 使用 FileProvider 共享 Android 照片
我已经阅读了关于这个论点的所有答案,但我总是收到接收我照片的应用程序的错误。
对于所有应用程序
,
唯一对我有用的方法是(它之所以有效,是因为sd 卡文件对所有应用程序都是公开的):
现在,我不知道如何共享位于私人文件夹中的文件。我使用了谷歌文档提供的代码:
这是使用共享文件的代码,FileProvider
但不能与任何应用程序一起使用,除了whats up:
为什么我在其他应用程序中不断收到错误,例如:
java.lang.SecurityException: Permission Denial: content://com.test.myapp.fileprovider/internal_cache/exported.jpg (pid=675, uid=10052) requires null
或者
IllegalArgumentException: Failed to find configuration root that contains content://com.test.myapp.fileprovider/internal_cache/exported.jpg
java - 使用 Android FileProvider 删除文件时出现 NullPointerException
我在使用 Android File API 时遇到问题。
这是我想要实现的目标,我正在从亚马逊下载视频,这些视频应该在完全下载后保存在本地。我以非常直接的方式执行此操作(代码已缩短,我只显示基本行):
其中inputStream
和fileOutputStream
是实例变量。
如果视频完全下载,这实际上效果很好。在这种情况下,一切都很好,之后我可以在本地访问视频。
但是,在应用程序中可能会发生视频下载被中断并因此需要取消的情况。如果是这种情况,我想删除存在但显然不完整的文件。
删除文件的代码如下:
最后一行fileProvider.delete(fileToDelete, null, null);
抛出 a NullPointerException
,我对其进行了调试,发现它fileProvider
已初始化,因此我强烈认为我用来调用的 URI 存在问题delete
,但我不知道它有什么问题。有谁知道如何使用文件提供程序进行正确删除?
更新:我希望这不是矫枉过正,我现在发布我的VideoDownloader
全班:
另一个更新:这是我的堆栈跟踪:
android - 如何使用 FileProvider 获取文件列表
A 正在开发 Android 项目。我需要提供 ContentProvider 以提供对某些目录的访问。FileProvider 这对我来说是一个很好的解决方案。是否可以使用 FileProvider 检索目录中的文件列表?
commonsware-cwac - StreamProvider - getExternalFilesDir - 是否有多个外部的语法?Android 4.4 上的 MicroSD 卡
我有一个现代的 Android 4.4 设备 - KitKat 4.4 附带的 LG L34C
相对于https://github.com/commonsguy/cwac-provider库 - 我看到提到了 getExternalFilesDir - 但不是复数版本。
我对 getExternalFilesDirs() 的测试表明,返回的数组索引对于“emulated /sdcard”有 0,而索引 1 有实际的外部 SD 卡。
是否可以获得与复数 getExternalFilesDirs 二级索引一起使用的 paths.xml 语法?
android - Android ContentProvider 创建文件
假设我有两个应用程序Foo
和Bar
. 我FileProvider
为这两个应用程序创建了一个并定义它们Manifest
以允许具有相同签名的应用程序访问,即使用相同的密钥库签名。
我的问题是:有没有人成功地使用insert(Uri uri, ContentValues contentValues)
从一个应用程序到另一个应用程序创建文件,即应用程序使用应用程序内部存储中的Foo
数据创建文件?ContentValues
Bar
android - Google+ 照片 ACTION_VIEW、FLAG_GRANT_PERSISTABLE_URI_PERMISSION 异常
在我的应用程序中,我希望能够根据文件类型在外部查看器中打开内部文件。我在应用程序清单中设置了一个 FileProvider,如下所示:
我使用以下代码显示应用程序选择器以查看文件。
这适用于大多数应用程序,但是如果我在列表中选择 Google+ 照片应用程序,虽然图像可以在 Google+ 照片中正常加载,但如果我尝试通过用手指捏来放大图像,它会立即崩溃。Google+ 照片似乎失去了对该文件的访问权限,当它再次尝试读取该文件时,它被拒绝访问。
我尝试过的所有其他应用程序都可以完美运行任何建议表示赞赏
android - 为什么将 FileProvider 用于外部文件?
我理解为什么 FileProvider 对于与另一个应用程序共享一个应用程序的私有文件(应用程序内部存储中的文件)很有用,同时控制权限。
文档解释了如何使用它来共享外部存储(SD 卡等)中的文件:
<external-path name="name" path="path" />
代替
<files-path name="name" path="path" />
(https://developer.android.com/reference/android/support/v4/content/FileProvider.html)
这有什么意义?为什么需要为此使用 FileProvider?另一个应用程序已经可以访问外部存储,因此任何其他应用程序都需要文件路径,而不是 URI。我错过了什么?
android - 发送电子邮件时响应 Gmail 附件的 Intent.ACTION_GET_CONTENT 失败
我正在尝试创建一个文件选择器来连接云存储服务。我将文件附加到其他应用程序时没有问题,甚至 Gmail 也成功地取回了我的活动结果,并根据我设置的 URI/clipdata 显示了正确的缩略图。
问题在于,当您实际发送电子邮件时,Gmail 会通知用户“无法发送附件”并发送不带附件的电子邮件。
我不知道我做错了什么。我尝试将 URI 设置为 Intent.setData() 以及使用 URI 并设置 Intent.setClipData()。此外,我尝试明确包含 FLAG_GRANT_READ_URI_PERMISSION 的标志。这些东西都不能解决问题。
任何知道可能出了什么问题的人,请插话。其他云提供商在通过此流程附加他们的内容时似乎没有问题,所以我只是不知道我做错了什么。
我的代码现在大致如下所示,但仍然不适用于 Gmail: