Intereting Posts
Создание файла .so для OpenH264 android Переопределение одного крана Photoview Отправить задание электронной почты Использование GoogleApiClient + LocationServices не обновляется GCM 3.0 – Требуется уточнение сообщения вверх по устройствам Есть ли Android-инструмент для поиска имени макета для работающего приложения? Доступ к Web Storage или IndexedDB извне браузера в Android Как сервис возвращает результат активности Как получить данные с сервера и обновить базу данных? API Google Places для Android Place Picker Не работает Android + Robolectric – исключение RuntimeException / InstantiationException в queryBuilder.query () в ContentProvider Как мне организовать контроль источника для проектов Android, включая библиотеки? Синтаксическая ошибка на токене variabledeclatoratorid ожидается после этого токена Android: GestureDetector не работает (gestureDetector.onTouchEvent (событие) всегда false) с вкладками (TabActivity, Tabwidget) Android: обычный способ остановки и регистрации неустранимой ошибки

Как поймать систему трансляции BOOT_COMPLETED, моя программа просто не работает?

Я подал небольшую программу, чтобы поймать системную трансляцию BOOT_COMPLETED , но она просто не работает:

 package com.alex.app.testsysreboot; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i("my_tag", "system reboot completed......."); } } 

manifest.xml

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.alex.app.testsysreboot" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <receiver android:name=".MyReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver> </application> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> </manifest> ? <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.alex.app.testsysreboot" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <receiver android:name=".MyReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver> </application> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> </manifest> 

Я закрыл AVD, а затем нажал кнопку «запустить» в Eclipse, и Eclipse запустил новый AVD, но после загрузки системы я просто не вижу журнал в LogCat …

Хорошо, я попробовал это, и это работает для меня,

 public class Autostart extends BroadcastReceiver { public void onReceive(Context arg0, Intent arg1) { Log.i("Autostart", "**********started************"); } } 

Файл AndroidManifest

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="pack.saltriver" android:versionCode="1" android:versionName="1.0" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <receiver android:name=".Autostart"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> </application> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission> </manifest> 

Вы должны добавить

 android:enabled="true" android:exported="true" 

А ТАКЖЕ

Убедитесь, что приложение не установлено на SD-карте. Установленные там приложения IIRC не получают BOOT_COMPLETED .

Другое дело, что устройства с включенной BOOT_COMPLETED «Быстрая загрузка» (например, несколько устройств HTC) (иногда?) Не отправляют BOOT_COMPLETED .

Начиная с Android 3.1+ есть еще несколько странностей относительно BOOT_COMPLETED касающихся «самого первого запуска приложения» – см. http://commonsware.com/blog/2011/07/13/boot-completed-regression-confirmed.html

Рабочий пример проекта с источником см. https://github.com/commonsguy/cw-advandroid/tree/master/SystemEvents/OnBoot

От http://arthurfmay.blogspot.com/2011/06/broadcastreceiver-bootcompleted-and.html

Поэтому вместо Eclipse я просто зашел в Android SDK и AVD Manager (в меню Window) и начал с него эмулятор. Я сделал это, конечно, после загрузки приложения в эмулятор. Я запускаю эмулятор, и мой BroadcastReceiver при загрузке работает нормально. Не нужно было запускать эмулятор в командной строке.

Другой рабочий образец можно найти здесь .