2016-12-23 5 views
0

Es ist eine App Schließfach Anwendung, die ich arbeite. Es sperrt alle Apps im Android-Handy. Was ich tun möchte, ist, dass, wenn eine gesperrte App im Android ausgeführt wird, meine Anwendung die App stoppen und ein Passwort oder einen Musterbildschirm anzeigen soll. Wenn das Muster korrekt ist, sollte es die App ausführen, ansonsten sollte sie deaktiviert werden. Also, ich wollte fragen, ob ich den Hintergrunddienst dafür nutzen soll oder sollte ich den Rundfunkempfänger benutzen? Ich weiß nicht, ob die App Broadcast sendet, wenn sie zum ersten Mal läuft. Und wenn ich den Hintergrund-Service verwende, wird es ausgeführt, wenn der Android neu gestartet wird? Ich meine, ohne die Anwendung erneut auszuführen? Bitte hilf mir, damit ich es gut verstehe. Vielen Dank.Hintergrund Service oder Broadcast Empfänger

Antwort

1

Hintergrund-Service ist wahrscheinlich die bessere Wahl für diese Art von Anforderungen. Und ja, Sie können den Hintergrunddienst starten, wenn das Telefon neu gestartet wird, indem Sie BroadcastReceiver verwenden. Dies ist, wie:

Stellen Sie sicher, diese Berechtigung haben:

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

Dann in application Tag, haben diese Empfänger:

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

Dann schließlich die BroadcastReceiver:

public class MyBootReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) { 
      Intent intent = new Intent(context, MyService.class); 
      context.startService(intent); 
     } 
    } 
} 

Auf diese Weise wird Ihr Dienst bei jedem Neustart des Geräts gestartet.

Hoffe, das hilft.

+0

Danke für die Antwort. Ich schätze das sehr. Ich wollte nur noch eine Frage stellen, wenn Sie mir helfen können, herauszufinden, wie man den Namen der aktuell laufenden Anwendung bekommt? Weil ich keine gute Lösung finden konnte. –

+0

Verwenden Sie diese Lib, um aktuelle laufende Anwendung zu erhalten: https://github.com/ricvalerio/foregroundappchecker –

+0

Vielen Dank @MayVaBao –

0

verwenden muß android.permission.PACKAGE_USAGE_STATS hinzufügen zu manifestieren, und wenn Ihre Android-Version ist 5.0 und höher dieser Code ausführen Verwendung stat Erlaubnis zu beantragen:

Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS); 
startActivity(intent); 
Verwandte Themen