Intereting Posts
Каков рекомендуемый размер значка ActionBar в Material Design (Android API 21+)? В чем разница между двумя вариантами использования учетных данных «VPN и приложения» и «Wi-Fi» при установке специального сертификата на эмулятор Android? Android 4.4 Печать в PDF без участия пользователя В чем разница между четким кешем и четкими данными в настройках Android Обработка профайлов Android Studio в многобиблиотечных проектах Обновления местоположения не работают в помещении, как утверждают API-интерфейсы поставщика Fusion Location Экспорт неподписанного apk из проекта Gradle в Android Studio Строка ListView не может быть нажата после добавления кнопки в строку В чем разница между Android-активностью и сервисом Намерение и связывание Msgstr "ошибка: не удается найти символьную переменную xml" при попытке Google Analytics Поток аудио на телефонный звонок Android Установка значка уведомления Android на удаленный URL-адрес Не удается запустить проект Eclipse – не удается найти базу данных API Есть ли ярлык на Android Studio для преобразования текста в верхний регистр?

Обнаружение аварийных сигналов будильника по умолчанию

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

Если нет – я буду удовлетворен также, если бы я смог получить список всех активных тревог, установленных пользователем (который я мог бы извлечь из каждого сигнала тревоги точное время, которое он звонит ..)

Что я пробовал до сих пор:

Я знаю, что есть способ получить форматированную строку для следующего сигнала тревоги:

String nextAlarm = Settings.System.getString(context.getContentResolver(), Settings.System.NEXT_ALARM_FORMATTED); 

Этот метод возвращает для определенных устройств (например, все Samsung Galaxy Series ..) пустую строку, даже если установлен будильник (с помощью встроенного будильника Samsung). Бьюсь об заклад, он работает только на устройствах-подключаемых устройствах с приложением по умолчанию для будильников.

Я хотел бы получить общее решение, которое будет работать в любом случае.

ТИА

ОБНОВИТЬ

Я постараюсь сделать мой вопрос яснее:

Мне неинтересно (напрямую) знать, что все PendingIntent хранится в AlarmManager

Мне интересно только знать о тревогах, установленных пользователем неявно, особенно о тех, которые он активировал для пробуждения.

Моя конечная цель – дать понять, что пользователь просыпается . это оно..

Solutions Collecting From Web of "Обнаружение аварийных сигналов будильника по умолчанию"

Я очень сомневаюсь, что вы найдете решение для этого.

Тревоги поддерживаются службой AlarmManagerService . Поскольку он не включен в SDK, отражение может быть единственным способом получить от него что-то. Но, по внешнему виду, даже размышления не могут помочь вам здесь:

  • Нужен доступ к AlarmManagerService $ Batch # alarms <— ArrayList <Alarm>
  • Нужен доступ к AlarmManagerService # mAlarmBatches <— ArrayList <Batch>
  • Используйте отражение:
    • Класс <? > Ams = Class.forName ("com.android.server.AlarmManagerService")
    • Поле mAlarmBatches = ams.getDeclaredField ("mAlarmBatches")
    • Список объектовOfBatches = mAlarmBatches.get (????)
    • Прикрепленный

Кажется, это тупик для меня. Вы не можете создавать AlarmManagerService – даже не путем обращения к его конструктору и вызова его (потому что он вызывает собственный метод).

Еще одна линия рассуждений : вот взгляд на AlarmManagerService$Alarm class:

 public static class Alarm { public int type; public int count; public long when; public long windowLength; public long whenElapsed; // 'when' in the elapsed time base public long maxWhen; // also in the elapsed time base public long repeatInterval; public PendingIntent operation; <<<<<<============Problem============== public WorkSource workSource; .... .... } 

Если можно получить доступ к PendingIntent , что PendingIntent им отменить будильник по желанию – тревоги, которые были установлены другими приложениями?

Тем не менее, я надеюсь, что кто-то здесь поможет вам.

Ссылка: AlarmManagerService

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

1.) Система сообщила, что приложение по умолчанию для будильника теперь начинает звонить.

Я проверил журналы ADB с моего Note3, я мог видеть этот журнал каждый раз, когда по умолчанию звучит сигнал « I/SecExternalDisplayIntents_Java(2797): Intent Recieved .. - com.samsung.sec.android.clockpackage.alarm.ALARM_STARTED_IN_ALERT BroadCast Map value - 7 "

Я попытался поймать намерение с именем действия « com.samsung.sec.android.clockpackage.alarm.ALARM_STARTED_IN_ALERT » успешно. Хотя я очень сомневаюсь, что это намерение будет доступно для всех устройств Android.

Название пакета действия намерения дало мне дальнейшие намеки, и я нашел ответ на

2.) Я буду удовлетворен также, если бы я мог получить список всех активных тревог, установленных пользователем

Кажется, что clockpackage предоставляет провайдера контента в com.samsung.sec.android.clockpackage/alarm « com.samsung.sec.android.clockpackage/alarm », я com.samsung.sec.android.clockpackage/alarm запросить все тревоги, установленные пользователем из этой БД (данные о включении / отключении / имени / повторе и т. Д.).

Переключив кнопку включения / выключения, я понял, что значение для будильника включено / выключено в столбце № 1 (столбцы начинаются с 0-го индекса). Если вы хотите получить больше данных, я бы предложил вытащить БД и просмотреть структуру таблицы в браузере SQlite DB (устройство, возможно, придется внедрить, чтобы вытащить всю БД).

Подобная БД должна существовать и на других устройствах для Android (я сломал свою связь, иначе мог бы протестировать на этом) ура

Часы-часы по умолчанию – com.android.deskclock – имеет ClockProvider, который поддерживает запросы,
Но, к сожалению, он не экспортируется, поэтому он не может использоваться сторонними приложениями.

Вы не можете запросить AlarmManager для списка команд, которые вам нужно будет сделать для достижения этого.

Ближе всего вы можете найти список аварийных сигналов, чтобы использовать adb shell dumpsys alarm dumpsys adb shell dumpsys alarm , но, очевидно, вы не можете сделать это в коде.

Если я правильно понимаю, вы хотите проверить, какие приложения используют класс Alarm Manager. Если это так, вы можете сделать это, разрешив вашему приложению отслеживать лог-журнал, после того как вы сделали это, вы обязательно узнаете, какие приложения используют аварийная сигнализация. По крайней мере, это должно работать во время загрузки. Вы можете создать новый поток для запуска logcat (без опции -d) в фоновом режиме. Также убедитесь, что вы добавляете необходимые разрешения в манифест, чтобы это работало.

Съемка времени загрузки:

Введите описание изображения здесь

Обновление: LogCat после установки Alarm на 9:56 pm с использованием системных часов по умолчанию

После ознакомления с требованиями OP с помощью обновления в исходном вопросе, я попытался установить будильник на определенное время и проверил LogCat в одно и то же время, и результат записывается ниже со сведениями о времени и событиями в хронологическом порядке:

Введите описание изображения здесь

Это может представлять интерес также