2012-07-27 9 views
5

kullanarak düzgün çalışmıyor. Bu konuda Stackoverflow ile ilgili daha önceki bazı fikirlerim var ve iyi bir şey yaptım ama bu kodu çalıştırdığımda, İstisna ve Hata Yok. ama aynı zamanda ekran kilitlenmedi. Lütfen, bazı biri ben de My_admin.xml dosyasını eklendiKilit Ekranı Android kullanarak programlı Kilit Ekranı için Android

package net.top; 


import android.app.Activity; 
import android.app.KeyguardManager; 

import android.app.KeyguardManager.KeyguardLock; 
import android.app.admin.DeviceAdminReceiver; 
import android.app.admin.DevicePolicyManager; 
import android.content.ComponentName; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.os.PowerManager; 
import android.widget.Toast; 

public class LockActivity extends DeviceAdminReceiver{ 

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"); 
    } 
    void showToast(Context context, CharSequence msg) { 
     Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); 

    } 

public static class Myclass extends Activity { 

protected PowerManager.WakeLock mWakeLock; 
DevicePolicyManager mDPM; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // setContentView(R.layout.main); 

    mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); 
    // mDPM.lockNow(); 

    ComponentName mAdminName = new ComponentName(Myclass.this,LockActivity.class); 

     if(!mDPM.isAdminActive(mAdminName)) 
     { 
      Intent intent = new  
Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); 
      intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,  
mAdminName); 
      //mDPM.lockNow(); 
     } 
     else 
     { 
      mDPM.lockNow(); 
     } 



     } 
} 

} 

Bu kodun My manifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="net.top" 
android:versionCode="1" 
android:versionName="1.0" > 
<uses-sdk android:minSdkVersion="8" /> 
<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".LockActivity"> 
     </activity> 
    <activity 
     android:name=".LockActivity$Myclass" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <receiver 
     android:name=".LockActivity" 
    android:label="device_admin" 
    android:permission="android.permission.BIND_DEVICE_ADMIN"> 
<meta-data android:name="android.app.device_admin" 
      android:resource="@xml/my_admin" /> 
<intent-filter> 
    <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> 
</intent-filter> 
</receiver> 
</application> 
<uses-permission android:name="android.permission.WAKE_LOCK"/> 
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> 
</manifest> 

benim Sınıf dosyası içinde benim hatam işaret

<?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 /> 
    <expire-password /> 
    <encrypted-storage /> 
    <disable-camera /> 
</uses-policies> 
</device-admin> 

Yapamam Burada neyin yanlış gittiğini bulun. Buradaki hatamı göstermeme yardım edin. şimdiden teşekkürler.

cevap

2

bana

if(!mDPM.isAdminActive(mAdminName)) 
     { 
      intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); 
      intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mAdminName); 
       intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"is locked"); 
       intent.putExtra("force-locked", DeviceAdminInfo.USES_POLICY_FORCE_LOCK); 

      startActivityForResult(intent, 1); 
      System.out.println("The Device Could not lock because device admin not enabled"); 
      //mDPM.lockNow(); 
     } 
     else 
     { 
      System.out.println("The Device device admin enabled"); 
      intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); 
      intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mAdminName); 
       intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"onEnabled"); 
      mDPM.lockNow(); 
      mDPM.setMaximumTimeToLock(mAdminName, 0); 
       intent.putExtra("force-locked", DeviceAdminInfo.USES_POLICY_FORCE_LOCK); 

       startActivityForResult(intent, 1); 

     } 

Umut bu sizin için yararlı olacaktır için çalıştığını güzel, Etkinlik sınıfa bu kod ekleyebilirsiniz.

+2

DUDE! Telefonu bir hafta gibi kilitlemek için bir cevap arıyordum! Adamsın! – andrewktmeikle

+1

@andrewktmeikle Teşekkür ederim dostum ... –

+0

@RathaKrishna: Etiket "zorla kilitlen" değil "zorla kilitlen" olmalıdır. Daha fazla bilgi için [burada] (http://developer.android.com/reference/android/app/admin/DeviceAdminInfo.html#USES_POLICY_FORCE_LOCK) adresine bakın. Cevabınızı eksik olduğu için güncellemeniz gerekecektir. – ChuongPham