Подтвердить что ты не робот

Как можно программно настроить блокировку экрана с помощью пароля?

Есть ли кто-нибудь, который может помочь мне с кодом для установки пароля для блокировки экрана? ТНХ

4b9b3361

Ответ 1

Используйте этот код в своем приложении, он работает для меня:

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

Ответ 2

Проверьте это. Это сработало для меня.

введите описание изображения здесь

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>

У вас может быть этот файл policy.xml либо в макете, либо в папке xml. Единственное, что вам нужно позаботиться, - тег метаданных в файле Androidmanifest.

 <?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>

Перед блокировкой экрана вам необходимо включить разрешение администратора

введите описание изображения здесь

Тогда вы получите это.

введите описание изображения здесь

После Enable вы заблокируете экран... например,

введите описание изображения здесь

Ответ 3

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

Ответ 4

ознакомьтесь с этим сайтом http://blog.stef.be/patternlock. На этом веб-сайте реализация шаблона блокировки экрана с использованием javascript, html и css была определена очень четко... Весь код доступен с его открытым исходным кодом. Надеюсь, что он поможет вам

Ответ 5

Android N не работает, Смотрите здесь

Примечание. Этот API был ограничен с N для администраторов устройств, которые не являются владельцем устройства, а не владельцем профиля. Теперь пароль можно изменить только в том случае, если в настоящее время пароль не установлен. Владелец устройства и владелец профиля все еще могут это сделать, когда пользователь разблокирован и не имеет управляемого профиля.