Alex Rivera | Logout

Android: how to add a contact to the SIM using the SDK?

Asked 2010-06-27T17:36:33.580
9

I am writing an application which writes contacts in the SIM card of an Android phone. I am stuck at the point where the phone number is added: an exception occurs with no apparent reason.

Here is a snippet of code.

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");
     valu
Edit
Report

1 Answer

1

Data.CONTACT_ID has to be replaced by Data.RAW_CONTACT_ID

answered 2010-07-08T21:10:51.953

Your Answer