2015-12-31 22 views
5

Dodam, że moja usługa działa bez zarzutu, ale mój telefon wyłącza się i włącza, a następnie moja klasa reciverów w akcji android.intent.action.BOOT_COMPLETED.Automatyczne usługi nie uruchamiaj.my poniżej. Pomóż mi!Dlaczego usługa nie uruchamia się po BOOT_COMPLETED?

public class ReceiverCall extends BroadcastReceiver { 
    static final String ACTION = "android.intent.action.BOOT_COMPLETED"; 
    static final String ACTION1 = "android.intent.action.QUICKBOOT_POWERON"; 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.v("log_tag", "Action :: "+intent.getAction()); 
     if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) { 
       /* Setting the alarm here */ 
       Intent alarmIntent = new Intent(context, MyAlarmService.class); 
       PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, 0); 
       AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
       Calendar calendar = Calendar.getInstance(); 
       calendar.setTimeInMillis(System.currentTimeMillis()); 
       manager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), + (1000 * 60 * 2), pendingIntent); 
       Log.v("log_tag", "REPEAT"); 
      } 
    } 

Dodałem też uprawnienia do programu manifeast.

+0

Czy Twoja aplikacja znajduje się na karcie SD? Również, gdy umieścisz swój odbiornik i usługę na swoim manifeście, spróbuj umieścić pełny pakiet jak: com.your.package.ReceiverCall i daj mi znać, czy działa –

+0

Skizo i dodaję również pełną nazwę pakietu, ale nic nie działa. – crickpatel0024

+0

Zobacz moją odpowiedź proszę –

Odpowiedz

3

Może literówki, ale jeśli chcesz, aby ten Intent pracy należy zadzwonić:

context.startService(alarmIntent); 

i daj mi znać, jeśli ten dziennik Log.v("log_tag", "Action :: "+intent.getAction()); pokazany jest na logcat proszę ten Log.v("log_tag", "REPEAT"); też.

Sugerowałbym, że BroadcastReceiver będzie tak:

public class ReceiverCall extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    Log.v("log_tag", "Action :: "+intent.getAction()); 
    if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { 
      //make an intent to your Service as follows 
      Intent serviceIntent = new Intent(context, MyAlarmService.class); 
      context.startService(serviceIntent); 
     } 
} 

wtedy na swój Service w swojej onCreate Twojego Service dodać to:

/* Setting the alarm here */ 
Intent alarmIntent = new Intent(context, Whatever.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, 0); 
AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
Calendar calendar = Calendar.getInstance(); 
calendar.setTimeInMillis(System.currentTimeMillis()); 
manager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), + (1000 * 60 * 2), pendingIntent); 
Log.v("log_tag", "REPEAT"); 

Proponuję również, aby utworzyć nowy BroadcastReceiver i na nim wykonaj swoje rzeczy, które chcesz powtórzyć, i zastąp whatever.class swoim BroadccastReceiver.

+0

12-31 17: 00: 48.645: V/log_tag (2473): Akcja :: android.intent.action.BOOT_COMPLETED 12-31 17: 00: 48.649: V/log_tag (2473): REPEAT – crickpatel0024

+0

Czy dodałeś ' content.startService (alarmIntent); '? –

+0

jedną minutę sprawdzam. – crickpatel0024

2

Prawdopodobieństwo, że aplikacja jest zainstalowana w pamięci zewnętrznej, nie może odebrać zdarzenia zakończonego przez rozruch. Powinieneś dodać android:installLocation="internalOnly" do swojego manifestu.

+0

Helmi dodaję wewnętrznie, ale nie działa .. !! – crickpatel0024