मैं एक ऐसा एप्लिकेशन लिख रहा हूं जो एंड्रॉइड फोन के सिम कार्ड में संपर्क लिखता है। मैं उस बिंदु पर फंस गया हूं जहां फोन नंबर जोड़ा गया है: कोई अपवाद किसी स्पष्ट कारण के साथ नहीं होता है।एंड्रॉइड: एसडीके का उपयोग कर सिम में संपर्क कैसे जोड़ें?
यहां कोड का एक स्निपेट है।
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.provider.ContactsContract.RawContacts;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.RawContactsEntity;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.provider.ContactsContract.RawContacts.Entity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.widget.TextView;
[...]
try{
// add a row to the RawContacts table
ContentValues values = new ContentValues();
values.put(RawContacts.ACCOUNT_TYPE, "com.anddroid.contacts.sim");
values.put(RawContacts.ACCOUNT_NAME, "SIM");
Uri rawContactUri = getContentResolver().insert(RawContacts.CONTENT_URI, values);
// get the ID of the newly-added line
long rawContactId = ContentUris.parseId(rawContactUri);
// add a "name" line to the Data table, linking it to the new RawContact
// with the CONTACT_ID column
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
values.put(StructuredName.DISPLAY_NAME, "Name");
cr.insert(Data.CONTENT_URI, values);
// this insert succeeds
// add a "phone" line to the Data table, linking it to the new RawContact
// with the CONTACT_ID column
values.clear();
values.put(Data.CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
values.put(Phone.NUMBER, "+12345678901");
values.put(Phone.TYPE, Phone.TYPE_MOBILE);
cr.insert(Data.CONTENT_URI, values);
// this insert fails with a NullPointerException
}
catch(Exception e){
String xx=e.toString();
System.out.println(xx);
}
ऐप्लिकेशन अनुमतियां android.permission.READ_CONTACTS और android.permission.WRITE_CONTACTS है।
फोन नाम के साथ एक संपर्क दिखाता है लेकिन कोई फोन नहीं (आकस्मिक रूप से, सामान्य यूआई परिणामों का उपयोग करके उस संपर्क में फोन जोड़ना, नाम और फोन के साथ एक नया संपर्क जोड़ा जा रहा है, और केवल नाम के साथ पुराना संपर्क) ।
कोई विचार क्यों तीसरा सम्मिलन (डेटा तालिका में दूसरा) विफल रहता है, जबकि 2 पिछले वाले (रॉकंटैक्ट्स में 1 और डेटा में 1) सफल होते हैं?
हटाने में लायक हो सकता है यदि आप अपवाद स्टैक ट्रेस भी पोस्ट करते हैं तो यह वास्तव में मदद करेगा – ognian
आपका मतलब है, कैच स्टेटमेंट में ब्रेकपॉइंट डालना और स्टैक चिपकाना जब ब्रेकपॉइंट मारा जाता है तो पता लगाएं (यानी, अपवाद पकड़ा गया है)? क्या आप देख सकते हैं कि किस फ़ंक्शन ने अपवाद फेंका? हालांकि , Data.RAW_CONTACT_ID हल के साथ Data.CONTACT_ID की जगह। – user377486