问题标签 [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.

0 投票
2 回答
1787 浏览

android - Android文件复制导致java.io.IOException: File descriptor closed

我的应用程序复制了一堆文件,请求以列表的形式出现。我实现了一个 ContentProvider,所以我需要复制一个文件并将其注册到我的文件提供程序。我尝试了两件事 - 为每个文件副本分离一个 AsyncTask 并分离一个 AsyncTask 来处理所有这些。我面临的问题是,使用多个 AsyncTask 时,手机的速度确实会变慢一两秒钟。但是,在一个一个处理文件时,我得到了 IOException - 文件描述符关闭:

这是我的代码:

<...>

getMediaFileDescriptor 看起来像这样:

0 投票
2 回答
2448 浏览

android - 使用 Gmail 应用附加图像时出现无法发送附件错误

我有一个从图库中获取的图像文件路径,并且我将每个文件路径添加到 ArrayList 中。一切正常,甚至我可以在 Gmail 中看到附件。但是,如果我尝试发送图像。我收到无法发送附件错误。请帮我解决这个问题。我完全坚持解决方案。提前致谢。

图像的路径类似于/storage/emulated/0/myfolder/1433917106851_fact_2.jpg

注意:mShareImages 是一个ArrayList<Uri>. 我正在ArrayList<String>使用ArrayList<Uri>

最后将此 uri 对象添加到 ArrayList 中

0 投票
7 回答
75595 浏览

android - 在 Android 中实现文件选择器并将所选文件复制到另一个位置

我正在尝试在我的 Android 项目中实现文件选择器。到目前为止我能做的是:

然后在我的onActivityResult()

这是打开一个文件选择器,但它不是我想要的。例如,我想选择一个文件 (.txt),然后获取它File然后使用它。有了这段代码,我想我会得到完整的路径,但它没有发生;例如我得到:/document/5318/。但是使用此路径我无法获取文件。我创建了一个名为PathToFile()返回的方法File

我想要做的是让用户File从任何地方选择 a 意味着DropBox, Drive, SDCard, Mega, 等等...而且我没有找到正确的方法,我试图通过这个来获得Paththen get a ...但它不起作用,所以我认为最好获取它本身,然后以编程方式使用this 或.FilePathFileFileCopyDelete

编辑(当前代码)

我的Intent

我有一个问题,因为我不知道支持什么text/plain,但我会调查它,但目前没关系。

在我onActivityResult()的身上,我使用了与@Lukas Knuth 相同的答案,但我不知道我是否可以从我的另一部分中得到这个Copy答案,我正在等待他的答案。FileSDcard

getPath()来自@YS

我正在这样做:

得到一个NullPointerException

java.lang.RuntimeException:将结果 ResultInfo{who=null, request=131073, result=-1, data=Intent { dat=file:///path typ=text/plain flg=0x3 }} 传递到活动 {info 失败.androidhive.tabsswipe/info.androidhive.tabsswipe.MainActivity2}:java.lang.NullPointerException

感谢@YS@Lukas Knuth@CommonsWare编辑代码。

这是Intent我只接受文件的地方text/plain

在我onActivityResult()创建一个URI获取数据的地方Intent,我创建一个File保存绝对路径content_describer.getPath();的地方,然后我保留路径的名称以在其中使用它TextView(这太棒了@YScontent_describer.getLastPathSegment();不知道那个函数),然后我创建了一个File我调用的第二个,destination然后我发送AbsolutePath到可以创建这个File

我还创建了一个函数,您必须发送该函数,并且我们之前创建的函数将其source file复制destination file到新文件夹中。

我还创建了一个函数,告诉我这个文件夹是否存在(我必须发送destination file,如果它不存在我创建这个文件夹,如果它不存在我什么也不做。

再次感谢您的帮助,希望您喜欢与大家一起制作的这段代码 :)

0 投票
1 回答
2549 浏览

android - 裁剪图像位于内部存储

我在 Android 中使用裁剪意图时遇到问题。

我将图像存储在我的应用程序的内部存储分配中,我希望能够裁剪它们,然后将它们设置为壁纸。

我可以让它与存储在外部存储中的图像一起使用,并使用以下代码:

当我执行意图下方的代码时,无法启动裁剪意图并返回 0 结果代码。

0 投票
0 回答
745 浏览

android - Android共享文件不起作用

请帮忙,我是android编程的新手,对不起我的英语。我正在将android共享文件“PDF”共享到其他应用程序中,该过程是从Android共享文件开始的,但仍然无法正常工作,总是显示错误

java.lang.IllegalArgumentException:未能找到包含 /temp.PDF 的已配置根

单击文件时会发生上述错误。

下载ListPDF.java

清单.xml

文件路径.xml

并来自 logcat

0 投票
1 回答
1935 浏览

android - 获取并保存使用 Intent.ACTION_GET_CONTENT 选择的任何文件

我需要完成这些步骤:

  1. 让用户选择一个文件(任何类型的文件)
  2. 获取永久引用以稍后访问文件或复制到我的内部存储。

第一个真的很容易。我在使用 Intent.ACTION_GET_CONTENT 获取文件时没有任何问题。我还可以获得文件的 MimeType。但是我不能复制。

我尝试使用FileInputStream进行复制,但显然我没有权限。我真的希望有人能帮助我。

权限

意向呼叫

尝试复制文件失败

错误:android.system.ErrnoException: open failed: EROFS (Read-only file system)

0 投票
3 回答
48696 浏览

android - Android:FileProvider IllegalArgumentException 无法找到包含 /data/data/**/files/Videos/final.mp4 的已配置根目录

我正在尝试使用FileProvider从私人路径播放视频。面对

代码:

Java代码:

清单.xml

这有什么线索吗?

谢谢尼兹

0 投票
2 回答
3599 浏览

android - 使用文件提供程序共享资产

遵循https://developer.android.com/training/secure-file-sharing/index.html并能够将应用程序内部目录(/data/data/package/files/xxx/)中的文件共享给客户端应用程序文件提供者。

如何将资产文件夹(而不是内部目录)中的文件共享到客户端应用程序。

谢谢

0 投票
1 回答
340 浏览

android - 致命异常:ThumbnailManager-1 在将图像共享到 Intent 时

使用 FileProvider 共享图像时出现以下异常。以下是我以前使用的代码。

异常的详细堆栈跟踪如下。

当我选择电子邮件共享时,图像可以正确共享,但当我选择消息传递时失败。请协助。

0 投票
0 回答
332 浏览

java - 客户端应用程序在投影中使用“_data”查询 FileProvider

我正在实施FileProvider

它比普通的优点ContentProvider是更高的安全性:

  • content:// Uri通过为文件而不是为文件创建安全共享与应用程序关联的文件file:/// Uri
  • 内容 URI 允许使用临时访问权限授予读写访问权限

所以要点之一是客户端应用程序不应该知道访问数据的真实文件路径。

对于大多数客户端应用程序来说,在它们开始读取实际数据之前了解human-friendly name of file和/或非常重要。size of the file这些应用程序通过query() 方法FileProvider询问名称/大小。该方法只需要参数中的 2 个选项- OpenableColumns ( , )。projection_display_name_size

现在的问题。一些客户端应用程序正在_data进入投影,期望获得数据的真实完整路径。FileProvider但是出于安全原因,返回一个真实的文件路径会破坏使用的整个想法。

我的问题是“我错过了什么吗?”。只是一些客户端应用程序写得不好,所以他们的问题是因为没有获取文件路径而崩溃?