2017-12-20 3 views
0

Ich erstelle eine batteriebezogene App. ich ein Rundfunkempfänger erklärt in Manifest erstellt haben:Wie startet man einen Vordergrunddienst vom Broadcast-Empfänger?

Manifest:

<receiver android:name=".PowerConnectionReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.ACTION_POWER_CONNECTED" /> 
      <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" /> 
     </intent-filter> 
</receiver> 

Empfänger:

public class PowerConnectionReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(Intent.ACTION_POWER_CONNECTED)) { 
      Toast.makeText(context, "The device is charging", Toast.LENGTH_SHORT).show(); 
     } else { 
      intent.getAction().equals(Intent.ACTION_POWER_DISCONNECTED); 
      Toast.makeText(context, "The device is not charging", Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

ich eine Vordergrund-Benachrichtigung (wie this eins) Aber, wie man hinzufügen möchte, sollte i fügen Sie es vom Rundfunkempfänger hinzu? (dh wie kann ich einen Dienst von Rundfunkempfänger starten?)

Antwort

0

in OnReceive() starten Service:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 
    context.startForegroundService(intent); 
} else { 
    context.startService(intent); 
} 

Und in Service onCreate() so etwas machen:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 
    startForeground(1, new Notification()); 
} 

Einige Hersteller haben diese neuen Hintergrundbeschränkungen auf Android N rückgängig gemacht, weshalb Sie diese API auch unterstützen können.

Verwandte Themen