gpt4 book ai didi

android - ACTION_SEND - 共享与光盘上不同文件名的文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:00:13 25 4
gpt4 key购买 nike

问题的简短版本..

是否可以启动 ACTION_SEND Intent 以共享光盘上的文件,但共享使用的文件名与光盘上的文件名不同?

Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("image/png");
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile("somepath/3c72ae1adacb.dat"));
// BEGIN Hopefully something like this exists....
shareIntent.putExtra(Intent.EXTRA_FILENAME, "CuteKittens.png"));
// END
startActivity(shareIntent);

长版...

出于安全原因,我的 Android 应用程序中使用的一些文件在光盘上的文件名模糊不清,例如“3c72ae1adacb.dat”。

我希望已登录的用户能够共享这些文件,但要使用他们未隐藏的文件名,例如“CuteKittens.png”。

这可以实现吗? (理想情况下,无需将文件复制到光盘上,共享副本并最终将其删除,这对于如此简单的事情来说似乎需要大量工作)。

最佳答案

一般情况下,您不应使用 file:// Uri 值,因为无法保证其他应用可以读取这些文件。

欢迎您实现提供这些文件的 ContentProvider,其中您的 Uri 值具有“未隐藏的文件名”。所以,而不是:

shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile("somepath/3c72ae1adacb.dat"));

你会:

shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://your.authority.goes.here/files/CuteKittens.png"));

并且 ContentProvider 会通过某种方式知道 CuteKittens.png 的内容位于 somepath/3c72ae1adacb.dat.

内置的 FileProvider 几乎就是您所需要的,除了我假设文件名(原始文件名和重命名的文件名)在编译时是未知的。

关于android - ACTION_SEND - 共享与光盘上不同文件名的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23222702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com