2012-03-15 11 views

Odpowiedz

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

sprawdzić tę stronę http://blog.stef.be/patternlock. W tej witrynie implementacja wzoru blokady ekranu przy użyciu javascript, html i css została zdefiniowana bardzo wyraźnie ... Cały kod jest dostępny od jego otwartego źródła .. Mam nadzieję, że pomoże ci

21

Użyj tego kodu w swojej aplikacji, to działa dla mnie:

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

co to jest "nazwa działalności"? która aktywność? – Furqan

+0

jaka jest nazwa działania? – Karthik

+0

"nazwa działania" to nazwa klasy odziedziczonej po DeviceAdminReceiver. –

2

Sprawdź to. To działało dla mnie.

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> 

Możesz mieć ten policies.xml albo w układzie lub w folderze xml. Jedyną rzeczą, którą musisz zachować, to znacznik metadanych w pliku 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> 

Przed zablokować ekran musisz włączyć Admin pozwolenie

enter image description here

Wtedy dostaniesz to ..

enter image description here

Po Umożliwiają zablokuje ekran .. podoba się to

enter image description here

+2

Link do potencjalnego rozwiązania jest zawsze mile widziany, ale proszę [dodaj kontekst związany z linkiem] (http://meta.stackoverflow.com/a/8259/169503), aby inni użytkownicy mieli pojęcie, co to jest i dlaczego jest tutaj. Zawsze podawaj najważniejszą część ważnego linku, na wypadek, gdyby strona docelowa była nieosiągalna lub stała w trybie offline. Weź pod uwagę, że bycie "stanowiącym coś więcej niż link do zewnętrznej strony" jest możliwym powodem [dlaczego i jak niektóre odpowiedzi zostały usunięte?] (Http://stackoverflow.com/help/deleted-answers). –

+0

dziękuje XaviLópez – Sathish

+0

Dziękujemy za przyczynienie się do SO! –

0

Android N nie działa, See Here

Uwaga: API zostało ograniczone jak N dla administratorów urządzeń, które nie są i nie właściciel urządzenie profil właściciela. Hasło można teraz zmienić tylko wtedy, gdy nie ma aktualnie ustawionego hasła. Właściciel urządzenia i właściciel profilu mogą nadal to robić, gdy użytkownik jest odblokowany i nie ma zarządzanego profilu.