2015-12-31 44 views
5

Aggiungo il mio servizio in background eseguito perfettamente ma il mio telefono si spegne e si accende e quindi la mia classe di reciver in azione azione android.intent.action.BOOT_COMPLETED.but non start.my codice qui sotto per favore aiutami !!!Perché il servizio non si avvia dopo 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"); 
      } 
    } 

E aggiungo anche il permesso in manifeast.

<uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="com.employeemanager.app.permission.C2D_MESSAGE" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.BROADCAST_STICKY" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.GET_TASKS" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

    <application 
     android:allowBackup="true" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="***8" 
      android:label="@string/app_name" 
      android:theme="@android:style/Theme.NoTitleBar" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <service 
      android:name="***.MyAlarmService" 
      android:enabled="true" > 
     </service> 

     <receiver android:name="***.ReceiverCall" 
      android:enabled="true" > 
      <intent-filter> 
       <action android:name="***" /> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
       <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
       <action android:name="android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE" /> 
       <category android:name="android.intent.category.LAUNCHER" > 
       </category> 
      </intent-filter> 
     </receiver> 
    </application> 
+0

La tua app è su una scheda SD? Anche quando metti il ​​ricevitore e il servizio sul tuo manifest, prova a mettere il pacchetto completo come: com.your.package.ReceiverCall e fammi sapere se funziona –

+0

Skizo aggiungo anche il nome completo del pacchetto, ma non funziona nulla. – crickpatel0024

+0

Vedere la mia risposta per favore –

risposta

3

Forse misstyped, ma se si vuole fare che Intent lavoro si dovrebbe chiamare:

context.startService(alarmIntent); 

e fatemi sapere se questo registro Log.v("log_tag", "Action :: "+intent.getAction()); appare sul vostro Logcat si prega di questo Log.v("log_tag", "REPEAT"); troppo.

vorrei suggerire che il vostro BroadcastReceiver sarà simile a questo:

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); 
     } 
} 

Poi sul Service nella vostra onCreate del vostro Service aggiungere questo:

/* 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"); 

Vorrei suggerire anche che si crea un nuovo BroadcastReceiver e su di esso fai le tue cose che vuoi ripetere, e sostituisci lo whatever.class con il tuo BroadccastReceiver.

+0

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

+0

Hai aggiunto ' content.startService (alarmIntent); '? –

+0

un minuto lo controllo. Il servizio – crickpatel0024

2

Una possibilità che l'app sia installata su una memoria esterna, non può ricevere l'evento di avvio completato. Devi aggiungere android:installLocation="internalOnly" nel tuo manifest.

+0

Helmi aggiungo internamente ma non funziona .. !! – crickpatel0024