14 votes

Comment puis-je configurer le verrouillage de l'écran avec un mot de passe de manière programmatique ?

Est-ce que quelqu'un peut m'aider à trouver un code pour définir un mot de passe afin de verrouiller l'écran ?

23voto

Shaahul Points 458

Utilisez ce code dans votre application, il fonctionne pour moi :

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

4voto

Sathish Points 528

Vérifiez ceci . Cela a fonctionné pour moi.

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

MonAdmin.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>

politiques.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>

Vous pouvez placer ce policies.xml dans le layout ou dans le dossier xml. La seule chose à laquelle vous devez faire attention est métadonnées tag dans Androidmanifeste 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>

Avant de verrouiller l'écran, vous devez activer le droit d'administration.

enter image description here

Alors vous obtiendrez ceci

enter image description here

Après l'activation, l'écran se verrouille comme ceci

enter image description here

0voto

Maxim Points 2044

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

0voto

Jack Dotson Points 31

Consultez ce site web http://blog.stef.be/patternlock . Dans ce site, la mise en œuvre du modèle de verrouillage d'écran à l'aide de javascript, html et css a été définie très clairement... Le code entier est disponible puisque c'est une source ouverte... J'espère que cela vous aidera...

0voto

M.Eqbalazar Points 41

Android N ne fonctionne pas, Voir ici

Remarque : cette API a été limitée à partir de N pour les administrateurs de dispositifs qui ne sont pas propriétaires de dispositifs ou de profils. Le mot de passe ne peut désormais être modifié que si aucun mot de passe n'a été défini. Le propriétaire du dispositif et le propriétaire du profil peuvent toujours le faire lorsque l'utilisateur est déverrouillé et n'a pas de profil géré.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X