Android 如何分享?

Android 如何分享?,android,share,intentfilter,Android,Share,Intentfilter,作为一个学习练习,我正在编写一个具有android.intent.action.SEND intent的应用程序。我想让它发送任何我能想到的文件名,但我看到的所有定义此类应用的例子都是针对mediastore中的图像、ringtone manager中的铃声等。我不想列举谷歌搜索找到的将Uri转换为文件的所有可能算法。我想要一个通用的解决方案。我已经看到了一个听起来很有希望的开放类别,但我仍然没有看到一个通用的解决方案来发现底层文件名。有吗 我只是想让它上传任何内容到一个php脚本,该脚本实现了

作为一个学习练习,我正在编写一个具有android.intent.action.SEND intent的应用程序。我想让它发送任何我能想到的文件名,但我看到的所有定义此类应用的例子都是针对mediastore中的图像、ringtone manager中的铃声等。我不想列举谷歌搜索找到的将Uri转换为文件的所有可能算法。我想要一个通用的解决方案。我已经看到了一个听起来很有希望的开放类别,但我仍然没有看到一个通用的解决方案来发现底层文件名。有吗

我只是想让它上传任何内容到一个php脚本,该脚本实现了一个POST方法来上传文件。我看不出有任何理由将其限制在图像、视频或类似的内容上,但就我个人而言,我不知道如何使其适用于其他应用程序想要共享的任何随机文件

我在找一个要使用的文件名

不能保证有可使用的文件名。特别是如果方案是
content://
,则很可能没有文件名,因为在某些情况下没有文件(例如,数据是数据库中的BLOB)


即兴使用,我会使用这样的算法:如果方案是
content://
并且
Uri上的
getLastPathSegment()
返回一个整数,则生成一个文件名;否则,请使用
getLastPathSegment()
。这应该很好地涵盖
内容://
文件://
http://
方案,我想不出在
操作发送
处理活动中可能遇到的任何其他方案。

您是否试图使用
操作发送
意图调用
startActivity()
,或者您正在尝试执行响应
操作发送的活动
意图
?我正在响应操作发送。无论我得到什么内容,我都想上传到web服务器。我已经读过ContentResolver和ParcelFileDescriptor,所以我认为(尽管我还没有尝试)我有办法读取数据,但我正在寻找一个文件名来使用,并且找不到类似的东西(除非toString()人类可读的描述恰好是一个文件名)。我会尝试一下。看来这是我能做的最好的了。似乎奇怪的是,似乎没有任何类型的意图过滤器,我可以用它来说“只是文件的东西,请”。谢谢。@user1160711:噢,如果您真的只想使用
文件://
方案,请在
中使用
元素按方案进行限制。我把“我只想让这个东西上传它交给的任何内容”这样的说法解释为,你只想让这个东西上传它交给的任何内容,这并不意味着只有文件。是的,只获取file://是不起作用的。例如,图库中的图片显然是文件(你可以在文件浏览器中找到它们),但如果你从图库应用程序中执行共享操作,你肯定不会得到文件://Uri,即使在后面的某个地方隐藏着一个文件。