доступ к контактам сим-карты в Android - PullRequest
4 голосов
/ 11 июля 2011

Мне нужно получить доступ к первым 10 контактам SIM-карты на моем телефоне. код, который я использовал, следующий:

public class simcontacts extends Activity {
/** Called when the activity is first created. */
@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();

}

когда я тестировал его на телефоне, htc wildfire S, я получил все нулевые значения. Я также проверил это с помощью телефонных контактов URI, ContactsContract.Contacts.CONTENT_URI, и он работал нормально. как я могу получить доступ к контактам на SIM-карте? есть ли другой URI, который я должен использовать?

1 Ответ

0 голосов
/ 17 января 2012

Ваш код отлично работает с Uri:

Uri uri16 =ContactsContract.Contacts.CONTENT_URI;

Убедитесь, что вы добавили разрешения для Android в манифесте Android, например: android.permission.READ_CONTACTS (Использование разрешения).

...