2012-11-28 6 views
8

मुझे एंड्रॉइड 2.1 और ऊपर का समर्थन करने की आवश्यकता है।संरचित डेटा को नए संपर्क में जोड़ने के लिए कैसे करें

Google ने संपर्क कॉन्ट्रैक्ट का उपयोग करने का एक उदाहरण पोस्ट किया है, लेकिन इनमें से कुछ ने एपीआई स्तर 11 से शुरू होने वाली चीजों का उपयोग किया है, इसलिए मुझे सुधार करने की आवश्यकता है, लेकिन मैं अटक गया हूं।

  String firstName = contactProperties.get("firstName"); 
      String lastName = contactProperties.get("lastName"); 
      String phone = contactProperties.get("phone"); 
      String email = contactProperties.get("email"); 
      String company = contactProperties.get("company"); 
      String postal = contactProperties.get("street") + ", " + contactProperties.get("city") + ", " + contactProperties.get("state") + " " + contactProperties.get("zip") + " " + contactProperties.get("country"); 

      // Creates a new intent for sending to the device's contacts application 
      Intent insertIntent = new Intent(ContactsContract.Intents.Insert.ACTION); 

      // Sets the MIME type to the one expected by the insertion activity 
      insertIntent.setType(ContactsContract.RawContacts.CONTENT_TYPE); 
      insertIntent.putExtra(ContactsContract.Intents.Insert.NAME, firstName + " " + lastName); 
      insertIntent.putExtra(ContactsContract.Intents.Insert.EMAIL, email); 
      insertIntent.putExtra(ContactsContract.Intents.Insert.PHONE, phone); 
      insertIntent.putExtra(ContactsContract.Intents.Insert.COMPANY, company); 
      insertIntent.putExtra(ContactsContract.Intents.Insert.POSTAL, postal); 

      // Send out the intent to start the device's contacts app in its add contact activity. 
      startActivity(insertIntent); 

नोट कैसे मैं NAME और POSTAL अतिरिक्त संरचित है:

तो, अब तक मैं इस किया है। यह सभी उपकरणों पर काम नहीं करता है, हालांकि कुछ पता पुस्तिकाओं में पहला और अंतिम नाम फ़ील्ड अलग-अलग शहर, राज्य और ज़िप फ़ील्ड अलग-अलग होते हैं। तो, मेरा "समाधान" बहुत बेवकूफ दिखता है: पहले नाम फ़ील्ड में पहले और अंतिम नाम दोनों होते हैं, और सड़क पता फ़ील्ड में पूरा पता होता है। मैं इसे कैसे ठीक करूं? क्या कोई मुझे एक उदाहरण देगा?

रिकॉर्ड के लिए, यह काम नहीं करता:

insertIntent.putExtra(ContactsContract.CommonDataKinds.StructuredPostal.STREET, contactProperties.get("street")); 
insertIntent.putExtra(ContactsContract.CommonDataKinds.StructuredPostal.CITY, contactProperties.get("city")); 

इसके अलावा, ध्यान दें कि मैं अपने मेनिफेस्ट के अनुमति जोड़ने के लिए संपर्क करने के लिए लिखित अनुमति देने के लिए नहीं करना चाहती। यह एक इरादा का उपयोग करने का पूरा बिंदु है।

+0

आप डालने के लिए अलग कोड है एपीआई 11 और ऊपर के लिए संपर्क में और एपीआई स्तर 11 और नीचे? –

उत्तर

1

प्रकट करने के लिए

 <uses-permission android:name="android.permission.WRITE_CONTACTS"/> 
    <uses-permission android:name="android.permission.READ_CONTACTS"/> 

अधिक जानकारी के इस पोस्ट को देख इस कोड का प्रयास करें

String Streetname="ZZZZZ"; 
ArrayList <ContentProviderOperation> ops = new ArrayList <ContentProviderOperation>(); 
    ops.add(ContentProviderOperation.newInsert(
    ContactsContract.RawContacts.CONTENT_URI) 
     .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null) 
     .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null) 
     .build()); 
    ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
      .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
      .withValue(ContactsContract.Data.MIMETYPE, 
     ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE) 
      .withValue(
     ContactsContract.CommonDataKinds.StructuredPostal.STREET, 
     Streetname).build()); 

     try { 
     getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
    } catch (Exception e) { 
        Log.e(getApplicationContext().toString(), "Exception: " + e.getMessage()); 
    } 

ऐड यह मेरे लिए काम ..

How to add new contacts in android

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