2010-12-28 8 views
22

Ich habe versucht, das Gerät über das Programm zu sperren. Aber ich kann die Lösung immer noch nicht finden. Ich möchte Android Froyo2.2 durch Programm sperren. Ich habe keyguardmanager und DeviceAdminManager versucht.Sperren Sie das Android-Gerät programmgesteuert

Meine App ist das Gerät remote sperren. Wenn eine Nachricht mit einigen Code-Wörtern zum Sperren empfangen wird, sperrt sie das Telefon. Ich habe viele Api_demo-Programme als Lösung gefunden, aber ich kann den Lock-Code nicht allein daraus extrahieren und eine Lösung finden.

+0

einige, wie ich es bekam ... – adithi

+4

dann liefern Sie die Antwort selbst, und akzeptieren Sie es – pufferfish

Antwort

15

sollte die Aktivitätsklasse innere Klasse sein und die outter Klasse sollte DeviceAdminReceiver

public class adminActivity extends DeviceAdminReceiver { 

    public static class Controller extends Activity { 

        DevicePolicyManager mDPM; 
      ComponentName mDeviceAdminSample; 

     protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 

       mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); 
       mDeviceAdminSample = new ComponentName(Controller.this, 
         adminActivity.class); 
     } 
    } 
} 

So sperren Sie das Gerät schreiben Sie den Code für den Fall erweitern, in dem Sie

if (active) { 
mDPM.lockNow(); 
} 

Wenn DeviceAdmin zu sperren verwenden ist aktiviert, dann wird das Telefon gesperrt. Um den Geräteadministrator zu aktivieren, wird der DevicePolicyManager Intent aufgerufen und vom Benutzer aktiviert.

Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); 
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);   
+3

adithi waht ist securemeAdmin und aktiv? Ich habe das gleiche Problem. kannst du erklären – arpit

+3

kann mir bitte jemand sagen was aktiv ist und was ist secureadmin hier? – Reyjohn

+0

Dieser obige Code stammt aus DeviceAdminSample, das in Android SDK-Beispielen enthalten ist, die mit Android SDK verfügbar sind. APIDemos -> App – Sundeep

3

Um diese Aufgabe zu lösen Sie einen Blick auf NoKeyGuard source code und genauer auf eine NoKeyGuard Service-Klasse und KeyguardLockWrapper Klasse zu nehmen.

Zum Entsperren das Gerät den Code in das Ereignis schreiben, wo Sie entsperren zu:

Context context= getApplicationContext(); 
    KeyguardManager _guard = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); 
    KeyguardLock _keyguardLock = _guard.newKeyguardLock("KeyguardLockWrapper"); 
    //to disable 
    _keyguardLock.disableKeyguard(); 
    //to enable 
    _keyguardLock.reenableKeyguard(); 
+8

Dies ist jetzt veraltet. Verwende nicht! – Hawk

1

Die Aktivitätsklasse die innere Klasse sein sollte, und die äußere Klasse sollte DeviceAdminReceiver

public class adminActivity extends DeviceAdminReceiver { 

    public static class Controller extends Activity { 

       DevicePolicyManager mDPM; 
     ComponentName mDeviceAdminSample; 

    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); 
      mDeviceAdminSample = new ComponentName(Controller.this, 
        adminActivity.class); 
    } 
} 
} 
-3
 WindowManager.LayoutParams lp = getWindow().getAttributes(); 
     lp.screenBrightness = 0; 
     getWindow().setAttributes(lp); 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
verlängern
+0

Dies funktioniert, sagen wir in Android 2.3, funktioniert aber nicht mehr. – DagW