Загрузочный приемник не работает

манифеста:

         <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".AlarmActivity"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                </intent-filter>
            </activity>
            <receiver android:name="CallReciver">
                <intent-filter>
                    <action android:name="android.intent.action.PHONE_STATE">  

</action>
                </intent-filter>
            </receiver>
            <receiver android:name=".SmsReceiver"> 
               <intent-filter android:priority="1000">
                    <action android:name=
                        "android.provider.Telephony.SMS_RECEIVED" /> 
                </intent-filter> 
            </receiver>
             <receiver android:name=".OnBootReceiver">
          <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
          </intent-filter>
        </receiver>
            <service
                android:enabled="true"
                android:name=".AlarmService">
            </service>
        </application>
         <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED">
         </uses-permission>
        <uses-permission android:name="android.permission.READ_PHONE_STATE">
        </uses-permission>
        <uses-permission android:name="android.permission.WRITE_SMS">
        </uses-permission>
       <uses-permission android:name="android.permission.READ_SMS">
        </uses-permission>
       <uses-permission android:name="android.permission.SEND_SMS">
        </uses-permission>
        <uses-permission android:name="android.permission.RECEIVE_SMS">
        </uses-permission>
        <uses-permission android:name="android.permission.INTERNET">
        </uses-permission>

Получатель:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;

public class OnBootReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        Log.d("Test","booot");
        Toast.makeText(context, "Test", Toast.LENGTH_LONG).show();
    }
}

Приемник не работает. Я выключаюсь и на своем устройстве, и ничего не происходит. SMS и Call Receiver в этом проекте работают хорошо. SMS-приемник и CallReceviver - работает хорошо. Первое сообщение обновлено - добавлен полный манифест.

Ответ 1

Если у вас есть HTC devic e, вам также нужно зарегистрироваться для "android.intent.action.QUICKBOOT_POWERON". Таким образом, запись в манифесте должна быть:

    <receiver android:name=".OnBootReceiver"> 
        <intent-filter> 
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.intent.action.QUICKBOOT_POWERON" />
        </intent-filter> 
    </receiver>    

На моем HTC, если я выключаю устройство и включаю его некоторое время, я получаю QUICKBOOT_POWERON и не BOOT_COMPLETED.

Если я выключаю устройство и вынимаю батарею на некоторое время - я получил BOOT_COMPLETED после запуска.

Ответ 2

Разрешение на размещение

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

Ответ 3

Также известно, что в Android >= 3.1 приложение устанавливается в состояние "остановлено" и не будет получать события загрузки и выключения, пока пользователь "что-то" не сделает с приложением хотя бы один раз. Смотрите этот пост по теме.

Ответ 4

Попробуйте следующее:

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

Ура!!!...