2012-04-18 2 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"/> 

및 getWritableDatabase에 sqlitopenhelper를 확장하는 데 사용된다 DBHelper 클래스 ..

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 .. 예, 안드로이드 전화의 미리 정의 된 연락처 테이블 –

답변

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()); 
} 

는 연락처 데이터베이스에서 이름의 목록과 번호를 얻기 위해 위의 코드를 사용합니다.

관련 문제