Problemas com bloqueio android no aplicativo de tela de bloqueio personalizado

Eu construí um aplicativo de tela de bloqueio personalizado que usa um receptor de transmissão e serviço para ouvir quando o usuário liga ou desliga a tela e de lá iniciar minha atividade. A atividade deve substituir completamente a tela de bloqueio. Para fazer isso, meu aplicativo deve desativar o bloqueio de ações do Android para que meu aplicativo funcione como a nova tela de bloqueio.

Em vez disso, o que acontece é que, assim que o aplicativo é instalado pela primeira vez, o serviço é iniciado pela primeira vez, o aplicativo parece estar funcionando. e quando o usuário desliga a tela do telefone pela primeira vez quando é ligado de novo, ele é apresentado ao meu aplicativo no topo e pode desbloquear o smartphone com o aplicativo. Mas então uma vez dentro do sistema operacional android se o usuário pressiona o botão home na próxima vez que desligar a tela e ligá-lo novamente em vez de ser levado de volta para o meu aplicativo, eles são levados para a tela de desbloqueio de estoque com o aplicativo aberto por baixo dele quando deveria estar no topo.

Aqui está o meu código:

Meu serviço:

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

Meu receptor de transmissão:

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

Minha atividade iniciada basicamente é vazia com apenas um botão de desbloqueio que chamafinish(); quando pressionado.

questionAnswers(2)

yourAnswerToTheQuestion