java - How to track down which field is causing NullPointerException when inserting custom field into Contacts Data table? -
मुझे पूरा अपवाद मिलता है:
07-16 19: 19: 17.244: त्रुटि / DatabaseUtils (151): java.lang.NullPointerException 07-16 19: 19: 17.244: त्रुटि / DatabaseUtils (151): com.android.providers.contacts.ContactsProvider2.insertData (ContactsProvider2.java:3069) पर 07-16 19: 19: 17.244: त्रुटि / DatabaseUtils (151): 19:: 17.244: त्रुटि / DatabaseUtils (151): पर कॉम com.android.providers.contacts.ContactsProvider2.insertInTransaction (ContactsProvider2.java:2930) 07-16 19 पर .android.providers.contacts.CContactsProvider2.insertInTransaction (CContactsProvider2.java:156) 07-16 19: 19: 17.244: त्रुटि / DatabaseUtils (151): com.android.providers.contacts.HtcContactsProvider2.insertInTransaction पर (HtcContactsProvider2.java: 1281) 07-16 19: 19: 17.244: त्रुटि / DatabaseUtils (151): 19:: 17.244: त्रुटि / DatabaseUtils (com.android.providers.contacts.SQLiteContentProvider.insert (SQLiteContentProvider.java:90) 07-16 19 पर 151): com.android.providers.co पर Ntacts.ContactsProvider2.insert (ContactsProvider2.java:2737) 07-16 19: 19: 17.244: त्रुटि / डाटाबेसयूटील्स (151): एंड्रॉइड कंसेंट। कॉन्ट्रैंटप्राइवर $ Transport.insert (ContentProvider.java:150) 07-16 19: 19: 17.244: त्रुटि / DatabaseUtils (151): android.content.ContentProviderNative.onTransact (ContentProviderNative.java:170) पर 07-16 19: 19: 17.244: त्रुटि / DatabaseUtils (151): android.os.Binder.execTransact पर (बाइंडर। Java:287) 07-16 19: 19: 17.244: त्रुटि / डेटाबेसयूटील्स (151): Dalvik.system.NativeStart.run पर (मूल विधि) मैंने उपयोग किए गए कोड है:
सार्वजनिक शून्य सेवाराम्यता () {ContentValues मान = नई सामग्री वैल्यू (); Values.put (Data.DATA1, this.getFormality ()? "1": "0"); SaveDataWithMimeType (clsContacts.MIMETYPE_FORMALITY, मूल्य, this.getId ()); } निजी शून्य saveDataWithMimeType (स्ट्रिंग माइम प्रकार, ContentValues मूल्यों, स्ट्रिंग contactid) {{int आधुनिक = ctx.getContentResolver ()। अद्यतन (Data.CONTENT_URI, मूल्यों की कोशिश, ContactsContract.Data.RAW_CONTACT_ID + "=" + contactid + "और" + ContactsContract.Data.MIMETYPE + "= '" + माइमप्रकार + "' ', रिक्त); If (mod == 0) {values.put (Data.RAW_CONTACT_ID, contactid); Values.put (Data.MIMETYPE, माइमप्रकार); // यह वह जगह है जहां अपवाद उत्पन्न होता है URI u = ctx.getContentResolver ()। डालें (Data.CONTENT_URI, मान); }} पकड़ (अपवाद ई) {e.printStackTrace (); }} यह केवल फोन पर होता है, और एमुलेटर में नहीं। सभी फ़ील्ड की जांच की गई और इनमें से कोई भी नल नहीं है। इसका कारण क्या हो सकता है?
इसके लिए कच्चे आंकड़ों में घूमने की एक विशाल प्रक्रिया के माध्यम से पता लगाया गया है मैन्युअल रूप से जोड़ा संपर्क, ट्रायल और त्रुटि के बाद पता लगाने के लिए कि सामग्री प्रदाता क्या होने पर जोर दे रहा था यह काफी आसान है:
एक नया फोन रिकॉर्ड डालने के दौरान, आप चाहिए एक Data.Type निर्दिष्ट करें ("data2" नामक कॉलम)। यदि आप यह निर्दिष्ट नहीं करते हैं, तो HTC के संपर्क सामग्री प्रदाता एक NullPointerException के साथ क्रैश हो जाएगा। स्टॉक एंड्रॉइड संपर्क सामग्री प्रदाता क्रैश नहीं करता है, यह केवल TYPE_OTHER के लिए डिफ़ॉल्ट है।
एचटीसी के लिए धमाकेदार और विस्फोट (ए) एक अलग संपर्क सामग्री प्रदाता को कार्यान्वित करते हुए जो नहीं नियम, और (बी) केवल कर्नेल स्रोत कोड को जारी करने के लिए। हमें यह देखने के लिए HtcContactsProvider2.java की आवश्यकता है कि उनका कोड क्या समस्या है।
Comments
Post a Comment