2012-07-27 17 views
5

का उपयोग कर ठीक से काम नहीं कर रहा है। मुझे इसके बारे में पिछले प्रश्नों के स्टैकओवरफ्लो से कुछ अच्छे विचार मिले, और मैंने कुछ अच्छी तरह से किया, लेकिन जब मैं उस कोड को चलाता हूं, तो कोई अपवाद और त्रुटि नहीं होती है। लेकिन भी, स्क्रीन लॉक नहीं किया था। कृपया कुछ एक इस कोड मेरे Manifest.xmlAndroid के लिए लॉक स्क्रीन एंड्रॉइड का उपयोग करके लॉक स्क्रीन के लिए एंड्रॉइड

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

मेरी कक्षा फ़ाइल में मेरी गलती इंगित

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



     } 
} 

} 

मैं भी My_admin.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 /> 
    <expire-password /> 
    <encrypted-storage /> 
    <disable-camera /> 
</uses-policies> 
</device-admin> 

मैं नहीं कर सकता यहां क्या गलत हो जाता है खोजें। कृपया मेरी गलती को इंगित करने में मेरी मदद करें। अग्रिम में धन्यवाद।

उत्तर

2

आप अपनी गतिविधि वर्ग में इस कोड को जोड़ सकते हैं, यह काम करता है ठीक है मुझे

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

     } 

आशा यह आपके लिए मददगार होगा के लिए।

+2

डुड! मैं फोन को लॉक करने के लिए एक हफ्ते की तरह जवाब देने जा रहा हूं! तुम आदमी हो! – andrewktmeikle

+1

@andrewktmeikle आपको धन्यवाद ... –

+0

@ राथाकृष्ण: टैग "फोर्स-लॉक" होना चाहिए, न कि "बल-लॉक"। अधिक जानकारी के लिए [यहां] देखें (http://developer.android.com/reference/android/app/admin/DeviceAdminInfo.html#USES_POLICY_FORCE_LOCK)। आपको अपना जवाब अपडेट करना होगा क्योंकि यह अपूर्ण है। – ChuongPham

संबंधित मुद्दे