2012-04-18 1 views
1

Я пытаюсь прочитать контакты из таблицы контактов и сохранить их все в переменной списка .. но не в состоянии понять, почему он, похоже, не работает. Заставляет принудительно закрыть выполнение. Контакты необходимы для отправлять по объекту json на веб-сервер.Как читать и хранить все контакты в списке из базы данных контактов?

 private static final String TABLE_CONTACTS = "contacts"; 



// contacts JSONArray 
JSONArray contacts = null; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    List<contact> l=new ArrayList<contact>(); 
    String query="SELECT * FROM"+ TABLE_CONTACTS; 

    DBHelper help= new DBHelper(getBaseContext()); 
    SQLiteDatabase db=help.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(query, null); 
    if(cursor.moveToFirst()) 
    { 
     do{ 
      contact contact = new contact(); 
      contact.setID(Integer.parseInt(cursor.getString(0))); 
      contact.setName(cursor.getString(1)); 
      contact.setPhoneNumber(cursor.getString(2)); 
      Toast.makeText(this,contact.name,Toast.LENGTH_LONG); 
      l.add(contact); 
     } 
     while(cursor.moveToNext()); 
    } 

и файл манифеста имеет 2 разрешения

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

и класс DBHelper, который используется для расширения sqlitopenhelper на getWritableDatabase ..

class DBHelper extends SQLiteOpenHelper { 
private static final String DATABASE_NAME = "contactsManager"; 

    // Contacts table name 
    private static final String TABLE_CONTACTS = "contacts"; 
DBHelper(Context context) { 
    super(context,DATABASE_NAME, null,1); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    // TODO Auto-generated method stub  
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // TODO Auto-generated method stub  
} 

}

+0

Сообщите вам об ошибке. – Sam

+0

Вы пытаетесь использовать Контакты с телефона ..? – ValayPatel

+0

@ValayPatel ..Yes ,,, из предопределенного контактного стола в телефоне android –

ответ

5
private void getDetails(){ 
    Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; 
    ContentResolver cr = getContentResolver(); 
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 
    String[] projection = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, 
         ContactsContract.CommonDataKinds.Phone.NUMBER }; 
    Cursor names = getContentResolver().query(uri, projection, null, null, null); 
    int indexName = names.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME); 
    int indexNumber = names.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); 
    names.moveToFirst(); 
    do { 
     String name = names.getString(indexName); 
     Log.e("Name new:", name); 
     String number = names.getString(indexNumber); 
     Log.e("Number new:","::"+number); 
    } while (names.moveToNext()); 
} 

использовать код выше, чтобы получить список имени и номера из базы данных контактов.