невозможно перезагрузить приемник вещания? - PullRequest
0 голосов
/ 19 января 2012

Я создаю службу, которая использует компонент службы, я хочу запускать приложение всегда в фоновом режиме. Предположим, что я выключаю мобильный телефон, и когда я на мобильном телефоне, наше приложение закрывается, т.е.

пытаюсь этот код

AndroidManifest.xml

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

и добавление этого кода в класс BroadCastreceiver обновление

private class ConnectionReceiver extends BroadcastReceiver{

        private Timer mTimer;
        private TimerTask mTimerTask;
        private long interval;

        @Override
        public void onReceive(Context context, Intent intent) {
             AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
             PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, ConnectionReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT);
             am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + interval, interval, pi); 
                {
                calGps();
                }
                }

Ответы [ 2 ]

0 голосов
/ 19 января 2012

Привет Лима Роуз

Вы хотите запустить свой сервис / деятельность после загрузки устройства. Проверьте ссылки ниже, вы поймете, как использовать BroadcastReceiver.

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

Запуск службы при загрузке

Надеюсь, это поможет вам.

Новый ответ:

Добавить <category android:name="android.intent.category.HOME" /> в фильтр намерений файла манифеста получателя.

0 голосов
/ 19 января 2012

Вы должны добавить запись разрешения манифеста:

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

(конечно, вы должны перечислить все другие разрешения, которые использует ваше приложение).

Затем реализуйте класс BroadcastReceiver, он должен быть простым и быстрым для выполнения. Наилучший подход состоит в том, чтобы установить в этом приемнике будильник, чтобы разбудить вашу службу (если нет необходимости держать его включенным в течение времени, как писал Прахаст).

public class BootUpReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, MyService.class), PendingIntent.FLAG_UPDATE_CURRENT);
    am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + interval, interval, pi);
}}

Затем добавьте класс Receiver в ваш файл манифеста:

<receiver android:enabled="true" android:name=".receivers.BootUpReceiver"
    android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</receiver>
...