android - olvidado - quitar patron de desbloqueo huawei sin resetear
Cómo deshabilitar la clave de inicio (5)
Me gustaría bloquear la pantalla. Quiero desactivar la tecla de inicio y solo usar la tecla de retroceso. ¿Cómo logro esto?
Agregue este código a su clase MainActivity
:
Timer timer;
MyTimerTask myTimerTask;
@Override
protected void onResume() {
super.onResume();
if (timer != null) {
timer.cancel();
timer = null;
}
}
@Override
protected void onPause()
{
if (timer == null) {
myTimerTask = new MyTimerTask();
timer = new Timer();
timer.schedule(myTimerTask, 100, 100);
}
super.onPause();
}
private void bringApplicationToFront()
{
KeyguardManager myKeyManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
if( myKeyManager.inKeyguardRestrictedInputMode())
return;
Log.d("TAG", "====Bringging Application to Front====");
Intent notificationIntent = new Intent(this, MainActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
try
{
pendingIntent.send();
}
catch (PendingIntent.CanceledException e)
{
e.printStackTrace();
}
}
public void onBackPressed() {
// do not call super onBackPressed.
}
class MyTimerTask extends TimerTask {
@Override
public void run() {
bringApplicationToFront();
}
}
No es un bloqueo para el botón ''inicio'', pero el usuario no puede cambiar a otra aplicación durante mucho tiempo (más de 100 milisegundos), tal vez esto es lo que quiere.
Encontré una manera de abordar la tecla INICIO. Para su aplicación configure el manifiesto como
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.MONKEY"/>
Ahora su aplicación es una aplicación Launcher alternativa.
Utilice el adb e inhabilite la aplicación de inicio mediante el administrador de paquetes
pm disable com.android.launcher2
Ahora la tecla de inicio permanecerá siempre en la misma pantalla.
Esta solución funciona hasta 3.x solamente.
De acuerdo, se suponía que esta era una pregunta difícil. Pero aquí hay una manera de resolverlo.
Anula el método de abajo en tu Actividad,
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
Y ahora maneja el evento clave así,
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
Log.i("Home Button","Clicked");
}
if(keyCode==KeyEvent.KEYCODE_BACK)
{
finish();
}
return false;
}
Para deshabilitar el botón de inicio, intente esto:
@Override
public void onAttachedToWindow() {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
El problema con la barra de notificaciones puede resolverse ocultando la barra de notificaciones como aquí:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.xxxx);
getWindow().addFlags(LayoutParams.FLAG_FULLSCREEN);
....
}
o establece el tema de pantalla completa para tu actividad o aplicación en manifiesto:
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
Use este método para deshabilitar la tecla Inicio en Android
@Override
public void onAttachedToWindow() {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}