我的活动获得shared intent
,可能与媒体。 这里是Activity
声明:转换每个Uri到文件
<activity
android:name=".name"
android:excludeFromRecents="true"
android:icon="@drawable/ic_launcher"
android:label="name">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
</activity>
我提取使用以下代码的媒体:
Uri mediaUri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
不幸的是,媒体采用的是Uri
(可能是content://
或任何其他)
我想知道例如Google Keep
等应用程序知道如何将所有这些Uri文件转换为文件,我该怎么做?
谢谢,不应该有任何保证不能够访问该文件,因为它来自“共享”意图?我需要这个文件来创建一个'MimeMessage'并发送一封附带这个文件的电子邮件,我可以在没有获取物理文件的情况下执行吗? – SagiLow
@SagiLow:“不应该有任何担保病态能够访问文件,因为它来自共享意图?” - 没有。请重新阅读我的答案,特别是项目符号列表。 “我可以在没有获得物理文件的情况下做到这一点” - 正如我在回答中所写的那样:如果由于某种原因,您绝对必须拥有一个文件,请使用该流为您的应用在某个地方制作本地数据副本您指定的文件系统访问权限。 – CommonsWare
您能否请我分享或指出我如何检查辅助功能并从“Uri”中获取流? – SagiLow