Android 2.1库不向后兼容Cupcake版,现在怎么样?

时间:2010-04-26 12:09:41

标签: android gallery compatibility android-2.0-eclair

我不知道为什么,但在Eclair中,默认(非幻想)的图库应用程序改变了它从蛋糕版本的生产,它打破了我的一个商业应用程序: - (

首先,当长按画廊并选择“Diashow”时,它不会发布任何实现Intent过滤器的应用程序拾取的Intent。相反,它将直接调用带有附加功能的“com.android.gallery/com.android.camera.ViewImage”。

问题:是否仍然可以截取此意图并允许用户选择我的应用程序来执行Diashow?

其次,VIEW意图的意图附加物混乱(无论如何我的2.1版本):而不是在Intent的查询参数中提供图片的BucketId。但是在2.1中,BucketId被转移到了Intent的附加功能。除了;它没有传递BUCKET_ID,而是传递了未定位的BUCKET_DISPLAY_NAME: - /

问题:我如何仍然从意图中获取唯一的BUCKET_ID,这样我就不必使用可能非唯一的BUCKET_DISPLAY_NAME

是否有人为这些问题找到了可行的解决方案?

我认为Android Intents的整个想法是能够将您的应用程序与基础Android环境集成,但我的2.1版本证明了这个想法仍然存在于理论之地: - (

2 个答案:

答案 0 :(得分:1)

  

首先,长时间按画廊   并选择“Diashow”,它没有   发布一个意图来接收   任何实现的应用程序   意图过滤器了。

Intent可能不是SDK的一部分,这意味着您不应该首先依赖它。除了图库支持常见Intents(例如IntentsGET_CONTENT)之外,Gallery应用程序中没有PICK作为SDK的一部分。< / p>

  

问题:是否仍有可能   拦截这个意图并允许   用户选择我的应用程序   Diashow?

我当然希望不会,因为这意味着存在严重的安全漏洞。

  

问题:我怎么还能得到   来自意图的唯一BUCKET_ID,所以   我不需要工作   可能不是唯一的   BUCKET_DISPLAY_NAME?

未记录此Intent。请不要尝试使用它。您的应用程序将在某些未提供标准库应用程序的Android设备上中断。正如您所经历的那样,您的应用程序将在未来的Android版本中中断。请坚持应用程序作者记录的Intents

  

我想到了Android的整个想法   意图是能够整合的   你的应用程序与基地   Android环境

仅在那些Intents被记录并且受相关应用程序的作者支持的情况下。如果你认为你可以抓住你在源代码或LogCat中找到的随机Intents,并使用它们,那就错了。

答案 1 :(得分:0)

  

问题:是否仍有可能   拦截这个意图并允许   用户选择我的应用程序   Diashow?

回答你的第一个问题......但是有了这个,你可能需要重建你的应用程序,然后更新......

要仅使您的活动接收您发起的意图,请为意图添加其他标记或创建您自己的自定义操作,然后触发意图。 在接收活动时,在应用程序清单文件中设置一个意图过滤器,提及您的自定义操作。你在这里完成了。只有使用自定义操作Intent过滤器分配的活动才会收到您的Intent。

  

问题:我怎么还能得到   来自意图的唯一BUCKET_ID,所以   我不需要工作   可能不是唯一的   BUCKET_DISPLAY_NAME?

不要尝试这个,因为你可能会遇到麻烦,因为它可能会破坏以前Android版本的应用程序。