所有在Android上响应特定类别的套餐?

时间:2010-10-12 20:35:55

标签: android android-widget android-intent android-manifest categories

我想构建一个非常频繁更新的Android小部件(5秒)。这意味着,我只想在屏幕打开时以及主屏幕处于活动状态时更新它。

如何获取家庭应用(或响应的应用)列表 <category android:name="android.intent.category.HOME"/>

在android API中,我可以使用Intent.createChooser(Intent target, CharSequence title)以某种方式获取列表,还是必须获取所有活动,检索其意图并在每个Intent上使用hasCategory(String category)

谢谢!

2 个答案:

答案 0 :(得分:0)

  

我想构建一个非常频繁更新的Android小部件(5秒)。

伊克。请允许用户配置。

  

这意味着,我只想在屏幕打开时以及主屏幕处于活动状态时更新它。

我不担心屏幕开启 - 只需使用_WAKEUPAlarmManager警报。但是,“当主屏幕是活动的活动”时,如果它可以正常工作,那将是一个史诗般的黑客攻击。

  

在android API中,我可以使用Intent.createChooser(Intent目标,CharSequence标题)并以某种方式获取列表,或者我必须获取所有活动,检索其Intent并在每个Intent上使用hasCategory(String类别)。 / p>

queryIntentActivities() / ACTION_MAIN CATEGORY_HOME使用Intent

然后,您将遇到这样的问题:这些活动仅仅是主屏幕的入口点,可能是也可能不是实际显示主屏幕的那些。

然后,您将遇到确定这是否是屏幕上的活动的问题。我不知道这是否可能。例如,ActivityManager会告诉你它是否正在运行(答案:100%的时间),但是我没有看到它在屏幕上的概念在哪里,而其他人没有。

然后,您将遇到甚至存在的ActivityManager API不是事件驱动的问题,这意味着您仍然需要运行代码来轮询ActivityManager,尽管您如果你以某种方式确定主屏幕不在前台,可以通过跳过工作来保存一些指令。

因此,我回到“请允许用户配置”,因为您只是在市场上乞求一星评级,特别是取决于您每5秒钟打算做什么。

答案 1 :(得分:0)