2012-03-15 2 views

ответ

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

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

21

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

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

Что такое «название деятельности»? какая деятельность? – Furqan

+0

Каково название мероприятия? – Karthik

+0

«Название деятельности» - это имя класса, унаследованного от DeviceAdminReceiver. –

2

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

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> 

Вы можете иметь это policies.xml либо в макете или в папке XML. Единственное, что вам нужно позаботиться, это metadata тег в 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> 

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

enter image description here

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

enter image description here

После Позволяют заблокирует экран .. например

enter image description here

+2

Ссылка на потенциальное решение всегда приветствуется, но, пожалуйста, [добавьте контекст вокруг ссылки] (http://meta.stackoverflow.com/a/8259/169503), чтобы ваши друзья-пользователи имели представление о том, что это такое и почему Это здесь. Всегда указывайте наиболее значимую часть важной ссылки, если целевой сайт недоступен или постоянно находится в автономном режиме. Примите во внимание, что быть более чем ссылкой на внешний сайт_ является возможной причиной [Почему и как удаляются некоторые ответы?] (Http://stackoverflow.com/help/deleted-answers). –

+0

спасибо XaviLópez – Sathish

+0

Спасибо за вклад в SO! –

0

Android N не работает, See Here

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

Смежные вопросы