Problemy z blokadą Androida w aplikacji ekranu blokady niestandardowej

Zbudowałem niestandardową aplikację ekranu blokady, która wykorzystuje odbiornik i usługę do słuchania, gdy użytkownik włącza lub wyłącza ekran, a stamtąd uruchamia moją działalność. Działanie ma całkowicie zastąpić ekran blokady. Aby to zrobić, moja aplikacja powinna wyłączyć blokadę akcji systemu Android, aby moja aplikacja mogła działać jako nowy ekran blokady.

Zamiast tego po pierwszym zainstalowaniu aplikacji usługa uruchamiana po raz pierwszy wydaje się działać. a gdy użytkownik po raz pierwszy wyłącza ekran swojego telefonu po włączeniu, są one wyświetlane z moją aplikacją uruchomioną na górze i mogą odblokować telefon za pomocą mojej aplikacji. Ale gdy raz w systemie operacyjnym Android, jeśli użytkownik naciśnie przycisk home przy następnym wyłączeniu ekranu i włączeniu go z powrotem, zamiast przywrócić go do mojej aplikacji, zostają przeniesieni na ekran odblokowania zapasów, gdy moja aplikacja jest otwarta pod nim, kiedy powinno być na górze.

Oto mój kod:

Moja usługa:

public class MyService extends Service {
    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onCreate() {

        super.onCreate();
        Log.d("MyService","Service STARTED");
        final IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
        filter.addAction(Intent.ACTION_SCREEN_OFF);
        final BroadcastReceiver mReceiver = new ScreenReceiver();
        registerReceiver(mReceiver, filter);
    }
}

Mój odbiornik telewizyjny:

public class ScreenReceiver extends BroadcastReceiver {

public static ArrayList<String> runningApplications = new ArrayList<String>();
private Context ctext;
public static boolean screenIsLocked;
public static KeyguardManager keyguardManager;
public static KeyguardLock lock;

@Override
public void onReceive(final Context context, final Intent intent) {
    ctext = context;
    keyguardManager = (KeyguardManager)ctext.getSystemService(Activity.KEYGUARD_SERVICE);
    lock = keyguardManager.newKeyguardLock(Context.KEYGUARD_SERVICE);
    lock.disableKeyguard();


    if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
        screenIsLocked = true;
        Log.d("ScreenReceiver", "False");

        Intent intenti = new Intent();
        intenti.setClass(context, starterActivity.class);
        intenti.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intenti.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intenti);


    } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
        screenIsLocked = false;
        Log.d("ScreenReceiver", "True");

                    Intent intenti = new Intent();
                    intenti.setClass(context, starterActivity.class);
                    intenti.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    intenti.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    context.startActivity(intenti);
    }
}

Rozpoczęta przeze mnie aktywność jest w zasadzie pusta dzięki jednemu przyciskowi odblokowania, który wywołujefinish(); po naciśnięciu.

questionAnswers(2)

yourAnswerToTheQuestion