2011-08-03 6 views
0

私は連絡先を使用するAndroidアプリケーションを作成しています。良いことは、多くのチュートリアルで見られるようにContacts.Phonesで動作させるためにどうにかして管理していることです。問題はContacts.Phonesが廃止され、ContactsContractに置き換えられていることです。私のアプリケーションはAndroid 1.5以降から動作する必要があります。Androidで連絡先を照会する方法に混乱しています

私のようないくつかの簡単な操作を行う必要があります。 を - 私は、アプリケーションを持っている必要があります考慮して、これを達成するための最良の方法は何すべての連絡先

バックアップ - 特定の連絡先 のクエリ - すべての連絡先 を問い合わせますアンドロイドのすべてのバージョンで作業しています。私は電話で現在のAPIレベルをチェックし、2つのコードブロックを持っている必要がありますか?

答えて

1

は、オプションのソリューション

int apiVersion = android.os.Build.VERSION.SDK_INT; 

    if(apiVersion < 5) { 
     ContentResolver cr = getContentResolver(); 
     Cursor cur = cr.query(People.CONTENT_URI, 
      null, null, null, null); 
     if (cur.getCount() > 0) { 
     while (cur.moveToNext()) { 
      String id = cur.getString(cur.getColumnIndex(People._ID)); 
      String name = cur.getString(cur.getColumnIndex(People.DISPLAY_NAME)); 
     } 
     } 
    } else { 
     String columns[] = new String[]{ ContactsContract.Contacts._ID, 
       ContactsContract.Contacts.DISPLAY_NAME };  
     Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, 
         columns,     
         null,    
         null,    
         ContactsContract.Data.DISPLAY_NAME + " COLLATE LOCALIZED ASC"); 
     if (cursor.getCount() > 0) { 
      while (cursor.moveToNext()) { 
       long id = Long.parseLong(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID))); 
       String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)).trim(); 

      } 
     } 
    } 

そして、ここでは、これはあなたを助けなければならないアプリケーションSupporting the old and new APIs in the same applicationを作るためのチュートリアルです。

+0

これは私が恐れていたものです。あなたの答えとリンクをありがとう。 – Alin

0

ContentResolverを使用してください。このコードを試してみてください。ここで

ContentResolver cr = getContentResolver(); 
     Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, 
       null, null, null, null); 
     if (cur.getCount() > 0) { 
     while (cur.moveToNext()) { 
      String id = cur.getString(
         cur.getColumnIndex(ContactsContract.Contacts._ID)); 
     String name = cur.getString(
         cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
     if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 
      //Query phone here. Covered next 
      } 
      } 
    } 
関連する問題