I need to access the first 10 SIM cards on my phone. The code I used is as follows:
public class simcontacts extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Uri uri16 = Uri.parse("content://icc/adn/"); String[]SimContactsName = new String[250]; String[]SimContactsNumber = new String[250]; int count = 0; ContentResolver cr = getApplicationContext().getContentResolver(); Cursor cur = cr.query(uri16, null, null, null, null); if (cur.getCount() > 0) { while (cur.moveToNext()) { String id = cur.getString( cur.getColumnIndex(ContactsContract.Contacts._ID)); if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { Cursor pCur = cr.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id}, null); while (pCur.moveToNext()) { String contact = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); String number = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); SimContactsName[count]=contact; SimContactsNumber[count]=number; count++; } pCur.close(); } } } TelephonyManager telMng = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); for (int i=0; i<10;i++) { Message=Message+SimContactsNumber[i]+"\n"; } Toast.makeText(this, Message, Toast.LENGTH_LONG).show(); }
when I tested it on the phone, htc wildfire S, I got all the null values. I also tested it using uri phone contacts, ContactsContract.Contacts.CONTENT_URI, and it worked fine. How can I access SIM contacts? is there another uri i should use?
source share