Загрузочный приемник не работает
манифеста:
<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>
Ура!!!...