Все пакеты, которые соответствуют определенной категории на Android? - PullRequest
0 голосов
/ 13 октября 2010

Я хочу создать виджет Android, который будет обновляться очень часто (5 секунд).Это означает, что я хочу обновлять его только при включенном экране и при активном домашнем экране.

Как получить список домашних приложений (или приложений, отвечающих на <category android:name="android.intent.category.HOME"/>)

Могу ли я использовать в Android API Intent.createChooser(Intent target, CharSequence title) и каким-то образом получить список или мне нужно получить все действия, получить их содержание и использовать hasCategory(String category) для каждого намерения.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 13 октября 2010
0 голосов
/ 13 октября 2010

Я хочу создать виджет Android, который будет обновляться очень часто (5 секунд).

Ик. Пожалуйста, позвольте этому быть настраиваемым пользователем.

Это означает, что я хочу обновлять его только при включенном экране и когда на главном экране активная активность.

Я бы не беспокоился о включении экрана - просто используйте не-1011 * будильник с AlarmManager. Однако, «когда домашний экран активен», это будет грандиозный взлом, если он вообще сработает.

Могу ли я использовать в API-интерфейсе Android Intent.createChooser (цель Intent, заголовок CharSequence) и каким-то образом получить список, или мне нужно получить все действия, получить их Intents и использовать hasCategory (категория String) для каждого Intent.

Используйте queryIntentActivities() для ACTION_MAIN / CATEGORY_HOME Intent.

Тогда вы столкнетесь с проблемой того, что эти действия являются просто точками входа на домашний экран и могут или не могут быть теми, которые фактически отображают сам домашний экран.

Тогда вы столкнетесь с проблемой определения, является ли это действие на экране. Я не знаю, возможно ли это. ActivityManager, например, скажет вам, работает ли он (ответ: 100% времени), но я не вижу, где он считает, что одни находятся на экране, а другие нет.

Затем вы столкнетесь с проблемой, когда даже существующие API ActivityManager не управляются событиями, что означает, что вам все равно нужно будет запустить код для опроса ActivityManager, хотя вы можете сохраните несколько инструкций, пропустив работу, если вы каким-то образом определите, что домашний экран находится не на переднем плане.

Поэтому я возвращаюсь к «пожалуйста, позвольте пользователю настраивать его», поскольку вы просто просите о присвоении ему одной звездочки, особенно в зависимости от того, что вы собираетесь делать каждые 5 секунд.

...