8
public final static void lockDevice() 
    { 
     try 
     { 
      if (devicePolicyManager.isAdminActive(adminComponent)) 
      { 
       devicePolicyManager.lockNow(); 
      } 
     } 
     catch (final Exception ex) 
     { 
      ... 
     } 
    } 

के लिए काम नहीं कर रहा उपरोक्त कोड किसी भी अपवाद फेंक नहीं है और न ही यह Motorola Xoom गोलियों के लिए ही स्क्रीन को लॉक किए। (होम्यॉम्ब और आइसक्रीम सैंडविच दोनों) एक ही कोड अन्य होम्यॉम्ब और आईसीएस टैबलेट पर पूरी तरह से काम करता है।devicePolicyManager.lockNow() मोटोरोला टेबलेट

मैं googled, लेकिन कोई समाधान नहीं मिला। कोई विचार.....?

+0

क्या आपने उत्सुकता से USES_POLICY_FORCE_LOCK का उपयोग किया है, मुझे यकीन है कि आपने अभी पूछा है? मैंने यह भी पढ़ा है कि लॉकनो() मोटोरोला उपकरणों के लिए बग किया गया है लेकिन टेबलेट्स के बारे में नहीं था DroidX के बारे में था। –

+0

हां, मेरे पास अनुमति के लिए अनुमति 'USES_POLICY_FORCE_LOCK' –

उत्तर

21

इस समस्या के संभावित कारणों में

1) मुझे लगता है कि (के साथ बढ़ाया अपने AndroidManifest.xml में रिसीवर के मेटा डेटा

2) आप नहीं जोड़ा है सही वर्ग के साथ कुछ समस्या है DeviceAdminReceiver) या तो व्यवस्थापक कॉम्पोनेंट या एंड्रॉइड के लिए: रिसीवर का नाम संपत्ति।

इस पर बहुत समय बिताने के बाद मैंने कोड बनाया है। मुख्य गतिविधि

public class LockerTest extends Activity { 
    protected static final int REQUEST_ENABLE = 0; 
    DevicePolicyManager devicePolicyManager; 
    ComponentName adminComponent; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Button button = (Button) findViewById(R.id.btn); 
     button.setOnClickListener(btnListener); 

    } 

    Button.OnClickListener btnListener = new Button.OnClickListener() { 
     public void onClick(View v) { 
      adminComponent = new ComponentName(LockerTest.this, Darclass.class); 
      devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); 

      if (!devicePolicyManager.isAdminActive(adminComponent)) { 

       Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); 
       intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, adminComponent); 
       startActivityForResult(intent, REQUEST_ENABLE); 
      } else { 
       devicePolicyManager.lockNow(); 
      } 

     } 
    }; 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (REQUEST_ENABLE == requestCode) { 
      super.onActivityResult(requestCode, resultCode, data); 
     } 
    } 

} 


के लिए


कोड एक नया वर्ग बनाएँ - Darclass - कोड

import android.app.admin.DeviceAdminReceiver; 

public class Darclass extends DeviceAdminReceiver{ 

} 


एक फ़ोल्डर 'रेस' में 'xml' बनाएँ। फिर 'xml' फ़ोल्डर में my_admin.xml फ़ाइल बनाएं। My_admin.xml के लिए कोड। </activity> के बाद इस रिसीवर जोड़ सकते हैं और </application>

<device-admin xmlns:android="http://schemas.android.com/apk/res/android"> 
    <uses-policies> 
     <limit-password /> 
     <watch-login /> 
     <reset-password /> 
     <force-lock /> 
     <wipe-data /> 
    </uses-policies> 
</device-admin> 


से पहले नोट अंत में अपने AndroidManifest.xml

को रिसीवर bellow दिया जोड़ने
<receiver 
      android:name=".Darclass" 
      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> 

यह अपने डिवाइस पर काम करना चाहिए।

+0

अनुमति है। लेकिन, जैसा कि मेरे प्रश्न में बताया गया है, मेरा कोड मोटोरोला 3.1+ के अलावा अन्य सभी उपकरणों (एचटीसी 2.2, वाइल्डफायर, एक्सपीरिया 2.3, गैलेक्सी टैब 3.1, 3.2 पर परीक्षण) पर काम करता है। मेरे पास मोटोरोला डिवाइस नहीं है, लेकिन अनुकरण XOOM2 3.2, XOOM2ME 3.2 पर आपके कोड का परीक्षण किया गया है, और यह काम नहीं करता है :(। हालांकि मैं आपके प्रयास की सराहना करता हूं। यह संभव है मोटोरोला के लिए एक टूटी हुई एपीआई, और मैं एक की तलाश में हूं क्या आपने मोटोरोला टैबलेट पर अपना कोड परीक्षण किया है? –

+0

मेरे पास मोटोरोला डिवाइस नहीं है। लेकिन मुझे लगता है कि कोड मोटोरोला डिवाइस पर काम करेगा। Emulators.has कुछ प्रतिबंध हैं और कोड निष्पादित करने में समस्या हो सकती है लेकिन कोड वास्तविक पर काम करेगा डिवाइस। मुझे यकीन है कि इसे छोड़ दें। – Vivek

+0

मुझे आशा है कि आप जो कहते हैं वह सही है। लेकिन दुख की बात नहीं है। कई ग्राहकों ने इस मुद्दे की सूचना दी है और उनमें से एकमात्र चीज मोटोरोला टैबलेट है। –

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