我正在编写应用程序 A 和 B。我希望 A 能够向 B 发送任何给定 mime 类型的文件 URI。我找到了一个关于如何处理某人发出文件请求的解释,所以更像是一个拉动,因为我想将一个 URI 从 A 推送到 B,而不需要 B 请求。我还看到了关于如何在应用程序之间共享数据的更通用的描述,但它使用 ACTION_SEND,在这种情况下,用户将看到一个可供选择的应用程序列表。我只希望应用程序 B 专门接收文件 URI。此外,当有人出于不同目的执行 ACTION_SEND 时,我不希望应用 B 显示为选项。那么,如何将文件 URI 从一个特定应用程序发送到另一个特定应用程序?
编辑 1:向示例中添加一些代码片段。
在应用程序 A 中,我正在执行以下操作:
Intent testIntent = new Intent("com.example.appB.TEST");
testIntent.addCategory(Intent.CATEGORY_DEFAULT);
testIntent.setData(Uri.parse("file:///mnt/sdcard/test.txt"));
startActivityForResult(testIntent, TEST);
在应用程序 B 中,我在清单中有以下内容:
<activity
android:name="com.example.appB.mainActivity"
android:label="@string/app_name"
android:launchMode="singleTask" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="com.example.appB.TEST" />
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="file"/>
<data android:mimeType="*/*"/>
</intent-filter>
</activity>
我得到的错误是 ActivityNotFoundException。如果我去掉 setData 行,活动就会启动,但显然我没有 URI。
您可以阅读我在这里遇到的更多问题。