2015-12-31 19 views
5

Ich füge meinen Hintergrunddienst hinzu, laufe perfekt, aber mein Telefon schaltet aus und schalte dann meine Empfängerklasse ein, um Aktion android.intent.action.BOOT_COMPLETED.but Service nicht zu starten.my Code unten bitte hilf mir !!!Warum startet der Dienst nicht nach 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"); 
      } 
    } 

Und ich füge auch Erlaubnis in manifeast hinzu.

<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

Ist Ihre App auf einer SD-Karte? Auch wenn Sie Ihren Empfänger und Service auf Ihr Manifest setzen, versuchen Sie, das volle Paket wie: com.your.package.ReceiverCall und lassen Sie mich wissen, wenn es funktioniert –

+0

Skizo ich auch full-Paket hinzufügen Namen hinzufügen, aber nichts funktioniert. – crickpatel0024

+0

Siehe meine Antwort bitte –

Antwort

3

Vielleicht misstyped Sie aber, wenn Sie diese Intent Arbeit machen wollen, sollten Sie rufen:

context.startService(alarmIntent); 

Und lassen Sie mich wissen, ob das Protokoll Log.v("log_tag", "Action :: "+intent.getAction()); auf Ihrem Logcat gezeigt bitte dieses Log.v("log_tag", "REPEAT"); auch.

Ich würde vorschlagen, dass Ihr BroadcastReceiver so sein wird:

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

Dann auf Ihrem Service in Ihrem onCreate Ihrer Service hinzufügen:

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

Ich würde auch vorschlagen, dass Sie ein erstellen neue BroadcastReceiver und darauf machen Sie Ihre Sachen, die Sie wiederholen möchten, und ersetzen Sie die whatever.class durch Ihre BroadccastReceiver.

+0

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

+0

Haben Sie ' content.startService (alarmIntent); '? –

+0

ein min ich überprüfe es. – crickpatel0024

2

Eine Chance, dass Ihre App auf externen Speicher installiert ist, kann das Ereignis Boot abgeschlossen nicht empfangen. Sie sollten in Ihrem Manifest android:installLocation="internalOnly" hinzufügen.

+0

Helmi Ich füge nur intern hinzu aber nicht funktioniert .. !! – crickpatel0024

Verwandte Themen