2015-08-03 1 views
-1

Я знаю, что это было задано много раз, и есть сотни примеров в Интернете, но я хочу понять, что не так в моем коде. Как видно из названия, я хочу выполнить какой-то код во время включения телефона, в частности, я хочу установить некоторые сигналы для получения уведомлений, но теперь это не актуально, моя проблема заключается в том, что приемник-приемник onReceive никогда не называется явноBootReceiver не работает

у меня есть правильные разрешения в манифесте:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

И я также зарегистрировал приемник в проявленном

<receiver 
    android:name=".BootBroadcastReceiver" 
    android:enabled="true" > 
    <intent-filter> 
    <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver> 

И я уже создал класс приемника

public class BootBroadcastReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context pContext, Intent intent) { 
    Toast.makeText(pContext,"waiting for debugger",Toast.LENGTH_LONG).show(); 
    android.os.Debug.waitForDebugger(); 
    //Stuff for the alarms 
} 

}

Может кто-нибудь объяснить мне, что я упущение, не отправляя всегда одни и те же примеры, которые я вижу повсюду? Я хочу знать, что не так в моем коде, а не как это сделать.

PS:: Я забыл сказать, что мне нужно остановить код для отладки тревожных событий, но я не думаю, что это проблема, поскольку он даже не показывает Toast. UPDATE: полный манифест

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="feddycapdev.conapo.turnario" > 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".Calendario" 
      android:label="@string/title_activity_calendario" 
      android:screenOrientation="portrait" > 
     </activity> 
     <activity 
      android:name=".Settings_Activity" 
      android:label="@string/title_activity_settings_" > 
     </activity> 
     <activity 
      android:name=".SettingGiorno" 
      android:label="@string/title_activity_setting_giorno" > 
     </activity> 
     <receiver 
      android:name=".BootBroadcastReceiver" 
      android:enabled="true" > 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
     </receiver> 
     <service android:enabled="true" android:name=".WebNotificChecker" /> 
     <service android:enabled="true" android:name=".Sveglia" /> 
     <service android:enabled="true" android:name=".NotificaVigilanza" /> 
    </application> 
</manifest> 
+0

Просьба представить весь ваш манифест. В частности, пожалуйста, покажите элемент '' для вашей активности запуска, который вы должны выполнить до того, как ваш приемник, зарегистрированный манифеста, будет работать. – CommonsWare

+0

И, конечно, вы запускаете хотя бы одну активность из вашего апка из пусковой установки? – Selvin

+0

CommonsWare Я не понимаю, что вы говорите, поэтому я должен запустить эту операцию перед приемником? Но если это так, как я могу установить уведомление, если пользователь не открывает активность? –

ответ

1

Я должен работать деятельность до приемника?

Что-то должно использовать явный Intent для запуска одного из компонентов вашего приложения до того, как будут работать какие-либо зарегистрированные зарегистрированные приемники. Для 99% приложений для Android это означает, что пользователь должен запустить приложение с главного экрана. Если ваше приложение служит плагином для какого-либо другого приложения, вам может не понадобиться операция —, пожалуйста, обсудите это с разработчиками приложения, которое будет размещать ваш плагин.

Как установить уведомление, если пользователь не открывает активность?

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

+0

Так почему facebook получает уведомление, когда я загружаю телефон, даже если я его все еще не открывал, и что наводнение при создании загрузочного приемника, если оно не работа заставляет пользователя не запускать приложение? –

+0

@FedericoCapece: «Какая польза в создании загрузочного приемника, если он не работает, потому что пользователь не запускал приложение?» - пользователь должен запустить приложение * один раз *. В этот момент ваше приложение переносится из так называемого «остановленного состояния», и работают приемники с подтвержденными показаниями. Ваше приложение вернется в состояние остановки, если пользователь удалит/переустановит приложение или пользователь нажимает «Force Stop» для вашего приложения в настройках. – CommonsWare

+1

@FedericoCapece: «Мне нужно остановить код для отладки тревожных вещей». Я скептически отношусь к тому, что это будет работать, поскольку я скептически отношусь к тому, что отсюда будет работать «Toast». Используйте вызовы «Журнал» для регистрации сообщений в LogCat. – CommonsWare

Смежные вопросы