我不知道为什么,但在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版本证明了这个想法仍然存在于理论之地: - (
答案 0 :(得分:1)
首先,长时间按画廊 并选择“Diashow”,它没有 发布一个意图来接收 任何实现的应用程序 意图过滤器了。
Intent
可能不是SDK的一部分,这意味着您不应该首先依赖它。除了图库支持常见Intents
(例如Intents
,GET_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版本的应用程序。