2016-08-01 19 views
-1

Ich entwickle eine Lock Screen App in Android Studio. Ich weiß, dass wir die HOME-Taste nicht deaktivieren können. Aber es gibt so viele Sperrbildschirm-Anwendungen im Play Store. Wie machen sie das? Wenn ich in diesen Apps die Home-Taste drücke, passiert nichts. Type Keyguard ist veraltet und Keylocker. Bitte, sag mir, wie ich den Home-Button machen kann, um nichts zu tun oder auf dem gleichen Bildschirm zu sein. Jetzt möchte ich es nicht als Home-Bildschirm einrichten, weil es dem Benutzer die Möglichkeit gibt, zwischen den Startbildschirmen zu wählen, und ich entwickle eine Lock-Screen-App. Wenn dies die einzige Lösung ist, dann sag mir, wie ich meinen Bildschirm als Startbildschirm machen soll programmatisch. Bitte geben Sie die richtige Antwort.Ändern Home Button Verhalten für Sperren Bildschirme in Android

+0

Versuchen Sie, diese http://stackoverflow.com/a/10025904/5515371 –

+0

Implementieren Sie die 'onKeyDown()' Methode und drücken Sie die Taste dort zu fangen. – Shark

+0

Danke @MujammilAhamed, aber die Sache, die ich sagte, ist Android ist jetzt geändert. Ich meine Keylocker ist nicht da, die Tastensperre ist nicht da und auch TYPE_KEYGUARD ist nicht da. Also, bitte beziehen Sie sich auf Code, der heute funktioniert. –

Antwort

1

Nach einer Menge Suche auf Google. Ich habe endlich eine Lösung gefunden. Ich habe es auf GitHub gefunden. Wenn jemand interessiert ist. Kopieren Sie einfach die folgende Klasse:

your package name; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.MotionEvent; 
import android.view.WindowManager; 
import android.widget.FrameLayout; 
import com.amigo.hammad.screenlock7292016.R; 

import static android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL; 
import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED; 
import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; 
import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ERROR; 

public class HomeKeyLocker { 
private OverlayDialog mOverlayDialog; 

public void lock(Activity activity) { 
    if (mOverlayDialog == null) { 
     mOverlayDialog = new OverlayDialog(activity); 
     mOverlayDialog.show(); 
    } 
} 

public void unlock() { 
    if (mOverlayDialog != null) { 
     mOverlayDialog.dismiss(); 
     mOverlayDialog = null; 
    } 
} 

private static class OverlayDialog extends AlertDialog { 

    public OverlayDialog(Activity activity) { 
     super(activity, R.style.AppTheme); 
     WindowManager.LayoutParams params = getWindow().getAttributes(); 
     params.type = TYPE_SYSTEM_ERROR; 
     params.dimAmount = 0.0F; // transparent 
     params.width = 0; 
     params.height = 0; 
     params.gravity = Gravity.BOTTOM; 
     getWindow().setAttributes(params); 
     getWindow().setFlags(FLAG_SHOW_WHEN_LOCKED | FLAG_NOT_TOUCH_MODAL, 0xffffff); 
     setOwnerActivity(activity); 
     setCancelable(false); 
    } 

    public final boolean dispatchTouchEvent(MotionEvent motionevent) { 
     return true; 
    } 

    protected final void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 
     FrameLayout framelayout = new FrameLayout(getContext()); 
     framelayout.setBackgroundColor(0); 
     setContentView(framelayout); 
    } 
} 
} 

Sie können einen Fehler auf Super finden (Aktivität, R.style.AppTheme); diese Linie. Sie müssen nur Ihr App-Thema angeben.

Und dann müssen Sie ein Objekt in der OnCreate-Methode des Sperrbildschirms machen. Und rufe die Sperrfunktion auf. z:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // Object of Class HomeKeyLocker. 
    mHomeKeyLocker = new HomeKeyLocker(); 
    setContentView(R.layout.yourActivityLayoutName); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
    // Calling Function in Class HomeKeyLocker to Block Home Button on this Activity. 
    mHomeKeyLocker.lock(this); 
} 
1

Sie müssen auf Ihre Aktivität OnKeyDown überschreiben, wie Shark sagte. Kopieren Sie einfach & einfügen unter Code zu Ihrer Aktivität.

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     // TODO Auto-generated method stub 

     if((keyCode==KeyEvent.KEYCODE_HOME) 
     { 
      // *** DO YOUR STUFF HERE *** 
      return true; 
     } 
      else 
      return super.onKeyDown(keyCode, event); 
    } 

Es wird den Klick auf Home-Taste behandeln.

Verwandte Themen