У меня есть приложение для Android, которое (среди прочего) показывает уведомления на устройстве Android Wear.
Это делается с помощью класса в модуле Wear, расширяющего WearableListenerService. В модуле Wear у меня также есть класс, расширяющий BroadcastReceiver.
Сценарий здесь: - Запустите приложение из Android Studio - Используйте приложение для телефона, чтобы уведомление отображалось на устройстве Wear - Перезагрузите устройство Wear
Теперь я хочу, чтобы, если я заставлю телефон показывать другое уведомление, оно должно появиться на носимом устройстве. Это не так, потому что WearableListenerService не запущен...
Поэтому я позволяю BroadcastManager прослушивать события ACTION_BOOT_COMPLETED:
@Override
public void onReceive(Context context, final Intent intent) {
Log.d(TAG, "onReceive!");
if(intent==null)
return;
if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
Log.d(TAG, "Action boot completed");
ComponentName c = context.startService(new Intent(context, OngoingNotificationListenerService.class));
Log.d(TAG, "returned " + c);
return;
}
.
.
.
И в моем файле манифеста:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
.
.
.
<receiver android:name=".ActionsReceiver" android:enabled="true" android:exported="false">
<intent-filter>
<action android:name="com.XX.receiver.action_pause" />
<action android:name="com.XX.receiver.action_resume" />
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
Теперь проблема в том, что мое приложение не получает действие BOOT_COMPLETED. Я проверил журнал и увидел, что другие слушатели на часах получают это событие после перезагрузки, но не мои.
Я видел несколько сообщений об этом, например, Android BOOT_COMPLETED не получен когда приложение закрыто
Я думаю, что это может быть очень похоже на мою проблему.
В моем приложении для Android Wear нет «основной активности», которую может запустить пользователь — это ТОЛЬКО служба прослушивания и приемник. Хотя я быстро реализовал основное действие с намерением запуска, чтобы я мог запускать приложение из панели запуска на часах. Это никак не повлияло на ситуацию. После перезапуска часов они не будут отображать уведомление из моего приложения, пока я не переустановлю его из студии Android.
Значит, я пропустил что-то важное? Должен ли мой WearableListenerService запускаться без моего участия при перезапуске часов? (Это не...) Или это как-то связано с тем, что это версия приложения для разработчиков?
(Примечание: я также пробовал выключать, а затем запускать - без разницы)