2012-03-15 5 views

Respuesta

0

http://developer.android.com/guide/topics/admin/device-admin.html

private static DevicePolicyManager dpm = 
     (DevicePolicyManager)context 
      .getSystemService(Context.DEVICE_POLICY_SERVICE); 

private static ComponentName admin = 
     new ComponentName(context, DeviceAdminManager.class); 
// add password policies you want 
dpm.setPasswordQuality(admin, DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED); 
dpm.setPasswordMinimumLength(admin, 5); 

**boolean result = dpm.resetPassword("newPassword", RESET_PASSWORD_WITHOUT_ENTRY);** 
0

la salida de este sitio web http://blog.stef.be/patternlock. En este sitio web, la implementación del patrón de bloqueo de pantalla con javascript, html y css se definió muy claramente ... Todo el código está disponible desde su código abierto ... Espero que lo ayude

21

Utilice este código en su aplicación, funciona para mí:

DevicePolicyManager devicePolicyManager = 
      DevicePolicyManager.getSystemService(Context.DEVICE_POLICY_SERVICE); 
ComponentName demoDeviceAdmin = new ComponentName(this, name of activity); 

devicePolicyManager.setPasswordQuality(
      demoDeviceAdmin,DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED); 
devicePolicyManager.setPasswordMinimumLength(demoDeviceAdmin, 5); 

boolean result = devicePolicyManager.resetPassword("123456", 
      DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY); 

Toast.makeText(this, 
      "button_lock_password_device..."+result, 
      Toast.LENGTH_LONG).show(); 
+1

¿Qué es tha "name of activity"? qué actividad? – Furqan

+0

¿Cuál es el nombre de la actividad? – Karthik

+0

"nombre de actividad" es el nombre de la clase heredada de DeviceAdminReceiver. –

2

Compruebe esto. Esto funcionó para mí.

enter image description here

LockScreenActivity.java

package com.kns; 
import android.app.Activity; 
import android.app.ActivityManager; 
import android.app.admin.DevicePolicyManager; 
import android.content.ComponentName; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class LockScreenActivity extends Activity implements OnClickListener { 
private Button lock; 
private Button disable; 
private Button enable; 
static final int RESULT_ENABLE = 1; 

    DevicePolicyManager deviceManger; 
    ActivityManager activityManager; 
    ComponentName compName; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     deviceManger = (DevicePolicyManager)getSystemService(
      Context.DEVICE_POLICY_SERVICE); 
     activityManager = (ActivityManager)getSystemService(
      Context.ACTIVITY_SERVICE); 
     compName = new ComponentName(this, MyAdmin.class); 

     setContentView(R.layout.main); 

     lock =(Button)findViewById(R.id.lock); 
     lock.setOnClickListener(this); 

     disable = (Button)findViewById(R.id.btnDisable); 
     enable =(Button)findViewById(R.id.btnEnable); 
     disable.setOnClickListener(this); 
     enable.setOnClickListener(this); 
    } 

@Override 
public void onClick(View v) { 

    if(v == lock){ 
    boolean active = deviceManger.isAdminActive(compName); 
      if (active) { 
       deviceManger.lockNow(); 
      } 
    } 

    if(v == enable){ 
    Intent intent = new Intent(DevicePolicyManager 
    .ACTION_ADD_DEVICE_ADMIN); 
      intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, 
        compName); 
      intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, 
        "Additional text explaining why this needs to be added."); 
      startActivityForResult(intent, RESULT_ENABLE); 
    } 

    if(v == disable){ 
    deviceManger.removeActiveAdmin(compName); 
       updateButtonStates(); 
    } 
} 

private void updateButtonStates() { 

     boolean active = deviceManger.isAdminActive(compName); 
     if (active) { 
      enable.setEnabled(false); 
      disable.setEnabled(true); 

     } else { 
      enable.setEnabled(true); 
      disable.setEnabled(false); 
     }  
} 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     switch (requestCode) { 
      case RESULT_ENABLE: 
       if (resultCode == Activity.RESULT_OK) { 
        Log.i("DeviceAdminSample", "Admin enabled!"); 
       } else { 
        Log.i("DeviceAdminSample", "Admin enable FAILED!"); 
       } 
       return; 
     } 
     super.onActivityResult(requestCode, resultCode, data); 
    } 
} 

MyAdmin.java

package com.kns; 
import android.app.admin.DeviceAdminReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.widget.Toast; 

public class MyAdmin extends DeviceAdminReceiver{ 


    static SharedPreferences getSamplePreferences(Context context) { 
     return context.getSharedPreferences(
      DeviceAdminReceiver.class.getName(), 0); 
    } 

    static String PREF_PASSWORD_QUALITY = "password_quality"; 
    static String PREF_PASSWORD_LENGTH = "password_length"; 
    static String PREF_MAX_FAILED_PW = "max_failed_pw"; 

    void showToast(Context context, CharSequence msg) { 
     Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onEnabled(Context context, Intent intent) { 
     showToast(context, "Sample Device Admin: enabled"); 
    } 

    @Override 
    public CharSequence onDisableRequested(Context context, Intent intent) { 
     return "This is an optional message to warn the user about disabling."; 
    } 

    @Override 
    public void onDisabled(Context context, Intent intent) { 
     showToast(context, "Sample Device Admin: disabled"); 
    } 

    @Override 
    public void onPasswordChanged(Context context, Intent intent) { 
     showToast(context, "Sample Device Admin: pw changed"); 
    } 

    @Override 
    public void onPasswordFailed(Context context, Intent intent) { 
     showToast(context, "Sample Device Admin: pw failed"); 
    } 

    @Override 
    public void onPasswordSucceeded(Context context, Intent intent) { 
     showToast(context, "Sample Device Admin: pw succeeded"); 
    } 

} 

main.xml

<textview android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="To Lock Screen First Enable it.." android:textsize="15sp"></textview> 

    <button android:id="@+id/lock" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Lock The Phone"></button> 

    <button android:id="@+id/btnEnable" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Enable"></button> 

    <button android:id="@+id/btnDisable" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Disable"></button></linearlayout> 

policies.xml

<?xml version="1.0" encoding="utf-8"?> 
<device-admin xmlns:android="http://schemas.android.com/apk/res/android"> 
    <uses-policies> 
     <limit-password> 
     <watch-login> 
     <reset-password> 
     <force-lock> 
     <wipe-data> 
    </wipe-data></force-lock></reset-password></watch-login></limit-password></uses-policies> 
</device-admin> 

puede tener este policies.xml ya sea en diseño o en la carpeta xml. Lo único que debe tener cuidado es metadata etiqueta en Androidmanifest archivo.

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.kns" android:versioncode="1" android:versionname="1.0"> 
     <uses-sdk android:minsdkversion="8"> 

     <application android:icon="@drawable/icon" android:label="@string/app_name"> 
      <activity android:name=".LockScreenActivity" android:label="@string/app_name"> 
       <intent-filter> 
        <action android:name="android.intent.action.MAIN"> 
        <category android:name="android.intent.category.LAUNCHER"> 
       </category></action></intent-filter> 
      </activity> 
<receiver android:name=".MyAdmin" android:permission="android.permission.BIND_DEVICE_ADMIN"> 
    <meta-data android:name="android.app.device_admin" android:resource="@layout/policies"> 
        <intent-filter> 
     <action android:name="android.app.action.DEVICE_ADMIN_ENABLED"> 
         </action></intent-filter> 
        </meta-data></receiver> 
</application> 
     </uses-sdk></manifest> 

Antes de bloquear la pantalla es necesario tener permiso de administrador

enter image description here

por lo que recibirá este ..

enter image description here

Después de habilitar bloqueará la pantalla .. como este

enter image description here

+2

Un enlace a una posible solución siempre es bienvenido, pero por favor [agregue contexto alrededor del enlace] (http://meta.stackoverflow.com/a/8259/169503) para que los demás usuarios tengan una idea de lo que es y por qué está allá. Siempre cite la parte más relevante de un enlace importante, en caso de que el sitio objetivo no esté disponible o esté permanentemente fuera de línea. Tenga en cuenta que ser apenas más que un enlace a un sitio externo es una posible razón para [¿Por qué y cómo se eliminan algunas respuestas?] (Http://stackoverflow.com/help/deleted-answers). –

+0

gracias XaviLópez – Sathish

+0

¡Gracias por contribuir a SO! –

0

Android N no está funcionando, See Here

Nota: Esta API se ha limitado a partir del N para administradores de dispositivos que no son propietario del dispositivo y el propietario no perfil. La contraseña ahora solo se puede cambiar si actualmente no hay una contraseña establecida. El propietario del dispositivo y el propietario del perfil aún pueden hacer esto cuando el usuario está desbloqueado y no tiene un perfil administrado.

Cuestiones relacionadas