2011-11-09 11 views
5

होने मैं Android के व्यवस्थापन API का उपयोग कर रहा है और एक DeviceAdminReceiver है, और ओवरराइड निम्नलिखित कार्य:मुसीबत ACTION_PASSWORD_SUCCEEDED प्राप्त करने और ACTION_PASSWORD_FAILED उद्देश्य

@Override 
public void onEnabled(Context context, Intent intent) 
{ 
    System.out.println("Admin On======================");  
} 

@Override 
public void onDisabled(Context context, Intent intent) 
{ 
    System.out.println("Admin Off======================"); 
} 

@Override 
public void onPasswordFailed(Context context, Intent intent) 
{ 
    System.out.println("PW Bad============================"); 
} 

@Override 
public void onPasswordSucceeded(Context context, Intent intent) 
{ 
    System.out.println("PW Good===========================");  
} 

@Override 
public void onPasswordChanged(Context context, Intent intent) 
{ 
    System.out.println("Changed PW=======================");   
} 

पर सक्षम, निष्क्रिय, और पीडब्लू काम बदल गया है, लेकिन पासवर्ड में विफल रहा है और करना सफल रहा नहीं। आश्चर्यजनक रूप से, वे यादृच्छिक रूप से थोड़ी देर में काम करते हैं और फिर काम करना बंद कर देते हैं। क्या मेरे कोड में कुछ गड़बड़ है, या यह एक एपीआई समस्या हो सकती है?

रिसीवर AndroidMaifest

<receiver android:name="AdminReciever" 
      android:label="Administration" 
      android:permission="android.permission.BIND_DEVICE_ADMIN" android:enabled="true"> 
      <meta-data android:name="android.app.device_admin" 
       android:resource="@xml/adminpolicies" /> 
      <intent-filter> 
       <action android:name="android.app.action.ACTION_PASSWORD_SUCCEEDED"/> 
       <action android:name="android.app.action.ACTION_PASSWORD_FAILED"></action> 
       <action android:name="android.app.action.DEVICE_ADMIN_ENABLED"></action> 
       <action android:name="android.app.action.ACTION_PASSWORD_CHANGED"></action> 

      </intent-filter> 
</receiver> 

में निर्धारित

बाहर मिले समस्या, ऐसा लगता है यह दर्ज नहीं किया गया था। मैंने dpm.setPasswordMinimumLength() के साथ न्यूनतम पासवर्ड लंबाई निर्धारित की थी। यदि पासवर्ड दर्ज किया गया है तो पासवर्ड प्रविष्टि गतिविधि PASSWORD_FAILED मंशा को नहीं लाती है, तो न्यूनतम लंबाई कम होती है। इसके अलावा PASSWORD_SUCCEEDED केवल एक खराब पासवर्ड (PASSWORD_FAILED निकाल दिया गया) सफल होने से पहले दर्ज किया गया था। तो एक पंक्ति में दो सफल पासवर्ड दूसरे इरादे को नहीं फेंक देंगे।

+0

आपने इसे कैसे हल किया? मैं न्यूनतम लंबाई 0 पर सेट करता हूं, और मुझे अभी भी असफल 'कास्ट नहीं मिलता है। मैं सोच रहा हूं कि कुछ अन्य घटक में न्यूनतम लंबाई सेट है, इस मामले में, मैं कुछ भी नहीं कर सकता। कोई विचार? –

+0

हाँ loncannon कृपया हमें मार्गदर्शन करें, आपने इस मुद्दे को कैसे हल किया? हर बार पासवर्ड दर्ज करने के लिए, गलत या अच्छा कैसे हो सकता है। बुरी तरह अटक गया:/ – Salmaan

+0

यह थोड़ी देर पहले था इसलिए अगर मैं इसे "निश्चित" करता हूं तो मैं अपने सिर के शीर्ष को याद नहीं कर सकता। उपरोक्त मुद्दा एक शोध परियोजना के लिए था जो बहुत पहले समाप्त हुआ था। मुझे लगता है कि फिक्सड का उपयोग करने का सबसे अच्छा खिताब नहीं था, बल्कि मुझे पता चला कि कुछ अजीब व्यवहार क्यों दिखाई दे रहा था। – Ioncannon

उत्तर

0

आप android.intent.action.USER_PRESENT का उपयोग कर सकते हैं। जब भी उपयोगकर्ता डिवाइस को अनलॉक करता है तो इस इरादे को निकाल दिया जाएगा। आप एक प्रसारण रिसीवर पंजीकृत कर सकते हैं जो डिवाइस अनलॉक घटनाओं का पता लगाने के लिए android.intent.action.USER_PRESENT को कैप्चर करेगा।

0

बहुत देर से उत्तर दिया गया लेकिन मुझे एक ही समस्या थी और आपके 'फिक्स्ड' संपादन ने मुझे काम करने में मदद की।

जैसा कि आप कहते हैं, यह बहुत अच्छी तरह से प्रलेखित नहीं है, इसलिए यह बहुत भ्रामक हो सकता है। documentation बताता है कि किसी भी पासवर्ड विफलता के परिणामस्वरूप पासवर्डवर्ड को बुलाया जा रहा है।

ACTION_PASSWORD_FAILED

कार्रवाई जब उपयोगकर्ता एक गलत उपकरण या प्रोफ़ाइल चुनौती पासवर्ड में प्रवेश किया है किसी उपकरण व्यवस्थापक को भेजा है। आप इस बिंदु पर DevicePolicyManager.getCurrentFailedPasswordAttempts() के साथ असफल पासवर्ड प्रयासों की संख्या की जांच कर सकते हैं। आप आम तौर पर इसे PasswordFailed (संदर्भ, इरादा, उपयोगकर्ताहैंडल) में संभाल लेंगे।

हालांकि, यह सच नहीं है। onPasswordFailed केवल तब कहा जाता है जब पासवर्ड/पिन/पैटर्न डिफ़ॉल्ट नीति को संतुष्ट करता है। यह आपकी न्यूनतम पासवर्ड लंबाई से अलग है।

हालांकि मुझे डिफ़ॉल्ट नीतियों को बताते हुए कोई दस्तावेज नहीं मिल रहा है, लेकिन यह 4 संख्या (पिन), 4 वर्ण (पासवर्ड) या 4 अंक (पैटर्न) प्रतीत होता है। इनमें से कम कुछ भी कॉल ट्रिगर नहीं करेगा।

उदाहरण के लिए, न्यूनतम लंबाई 6 तक सेट करें और अपना पासवर्ड 123 एबीसी पर सेट करें। अब निम्न का उपयोग कर लॉगिन करने का प्रयास करें: -

  • 123 - onPasswordFailed कहा जाता है

अच्छा थोड़ा परीक्षक परियोजना here आप के साथ इस कोशिश कर सकते हैं - onPasswordFailed

  • 123A नहीं बुलाया जाता है।

    भले ही आप शायद इस मुद्दे से अच्छी तरह से और वास्तव में चले गए हों, फिर भी किसी और को कुछ स्पष्टता मिल सकती है।

    चीयर्स।

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