2012-08-12 36 views
0

我想实现PICK intent-filter,到目前为止我已经在上下文菜单中找到了它们,但是如何回应谁启动了该应用程序?要为Facebook返回什么“分享图片”PICK意图(与图库相同)?

可以说我有活动:

<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的“分享照片”,但是使用图库应用程序选择图片,那么我希望我的应用程序能够正常工作。

我做错了什么?

回答

0

经过对这个更接近的研究后,我发现问题出在Uri的方案中。你不能将Uri和file-scheme(“file:// ...”)传递给Facebook应用程序。它什么也没做。相反,如果您使用content-scheme(“content:// ...”)来处理相同的图像,它可以完美地工作。

如何转换这两个是单独的问题。

0

我想说,他们搞砸了他们这边的实施。 Facebook应用并不是那么好.. 你的代码似乎对我来说是好事(尤其是因为它可以和Gallery一起工作)。

+0

我对画廊的解释并不好。我的意思是,如果我从Facebook应用程序中选择“分享照片”,然后使用Gallery(而不是我自己的应用程序),它实际上可以工作。所以不知何故,Facebook与Gallery合作,但与我的应用程序无关。 – TragedyStruck 2012-08-12 10:47:35