Android installLocation和BOOT_COMPLETED

时间:2011-06-17 20:58:08

标签: android

我有一个使用AlarmService的Android应用。根据文档,我不应该允许安装/移动此应用程序到外部存储。但是,用户不理解这一点(可能是由于某些设备上的内部存储空间很小) - 并要求选择在外部存储上安装(通过低星级评级)。

我需要在启动时重新注册警报并让BroadcastReceiver监听BOOT_COMPLETED。但是,对于安装在SD卡上的应用程序,不会调用此方法,因为尚未安装该应用程序,因此会触发该意图。遗憾的是,EXTERNAL_APPLICATIONS_AVAILABLE也没有 - 因此我没有得到启动的通知,因此没有更改重新设置警报。

有没有解决这种困境的方法?

4 个答案:

答案 0 :(得分:3)

对不起,不,这不是你可以解决的问题。这就是为什么我们说你不应该把应用程序放在SD卡上做这些事情。

答案 1 :(得分:1)

最坏情况选项:创建第二个应用程序(重量轻,无论它无法安装在SD卡上),它将在启动时监听BOOT_COMPLETED事件并触发您的主应用程序什么时候可用。告诉用户他们必须安装它才能使您的应用程序在安装到SD卡时正常工作。

如果您的应用程序移动到SD卡时发生了事件/触发器,您可以弹出通知,告诉他们从市场上抓取第二个应用程序。

我知道这是一个可怕的选择,但如果你绝望,它会奏效。

答案 2 :(得分:1)

好吧,如果用户要求转移到SD的原因是由于尺寸限制(即您的应用需要大量空间),那么我建议您将应用在SD卡上使用的数据存储但限制应用安装位置到内部存储。

向用户解释他们是否要求您正在开发的平台上没有意义或技术上不可行的内容:如果他们继续询问,那么我会说忽略它们。你的星级评分会受到打击,但令人痛苦的是,这无法解决问题。

答案 3 :(得分:1)

您已经对这个问题有了一些很好的答案 - 这是为了澄清,更正或以其他方式解决您在评论中提出的要点。

  如果应用程序只有几MB,

用户想要这个

有一天,用户可能还会决定他们希望您的应用程序是粉红色的,或3D的,或者能够与他们的Kenmore洗碗机接口,这些都不在您的计划中。因此,我建议您提出一个与客户沟通的系统,以解释为什么您的应用不是粉红色,不是3D,不是洗碗机,也不是存储在外部存储设备上。

现在,我很乐意承认Android Market应该为这种沟通渠道提供更多帮助(例如,回复评论)。

  

提出长期的技术解释(==借口)并不是正确的答案

非常欢迎您的意见。我希望你喜欢粉红色。

  

他们在想什么,设计一个只能在下次重启之前工作的闹钟服务?

他们不希望应用程序注册警报,或多或少地忘记它们。他们希望用户能够在重启后尽可能以干净的方式开始。

  

嗯 - 即使像HTC Desire这样的“强效”手机也只有150 MB的用户空间(en.wikipedia.org/wiki/HTC_Desire)。那太可悲了。

随意使用HTC。我不相信他们经常阅读StackOverflow。

  

Android在这里安装应用程序的解决方案充其量只是半心半意

不,它基本上受USB大容量存储模式的性质限制。长期解决方案是消除内部和外部存储之间的划分,这一过程已经在Honeycomb中进行。

  

和用户(使用不是工程师的电话的普通人)在UI中完全没有受过教育

我同意可以采取更多措施来帮助用户了解应用可能无法移动到外部存储的原因。

  

有人想知道为什么Android团队在应用程序设置中添加了“移动到SD卡”选项,因为这对于那里的大量应用程序并不真正起作用,但是对于不是这样的功能会造成不合理的还押可以在平台上实现

主要用于游戏,这是具有大量存储需求的主要应用类别。他们也往往不需要外部存储应用程序无法正常工作的功能。