我正在尝试实现PICK intent-filter,到目前为止我已经在上下文菜单中找到了它们,但是我如何回复那些以这种方式启动应用程序的人呢?
让我说我有活动:
<activity
android:name="ListActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.PICK" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
</activity>
现在我通过Facebook开始这项活动,分享照片并选择我自己的应用程序来获取它,我有以下代码:
File f = new File(Environment.getExternalStorageDirectory(), "image.jpg");
Uri uri = Uri.fromFile(f);
if(f.exists()) System.out.println("exists");
Intent data = new Intent();
data.setData(uri);
setResult(RESULT_OK, data);
finish();
然而Facebook应用程序中没有任何反应(我正在测试我的实现)。如果我再次使用Facebook的“分享照片”,但使用Gallery应用程序选择图像,那就像我希望我的应用程序一样有效。
我做错了什么?
答案 0 :(得分:0)
我会说他们搞砸了他们这方面的实施。 Facebook应用程序不是那么好,这已经不是什么秘密了...... 你的代码对我来说似乎没问题(特别是因为它适用于Gallery)。
答案 1 :(得分:0)
在仔细研究之后,我发现问题出在了Uri的计划中。您无法将带文件方案(“file:// ...”)的Uri传递给Facebook应用程序。它什么都不做。相反,如果您使用content-scheme(“content:// ...”)来处理相同的图像,那么它可以很好地工作。
如何在这两者之间进行转换是一个单独的问题。