1

私はFragmentを使用して連絡先リストを表示したいと思います。ユーザーがリストから名前を選択すると、番号がトーストに表示されます。リストには名前のみが表示されます。連絡先から番号を取得するにはどうすればよいですか。私は、連絡先リストを取得するためのAndroid開発者向け研修を経たが、チュートリアルでは不完全であっても、サンプルコードは、より高度なコンタクトリストの操作(検索など)連絡先のリストを取得するandroid

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    Context context = getActivity(); 
    int layout = android.R.layout.simple_list_item_1; 
    Cursor c = null; // there is no cursor yet 
    int flags = 0; // no auto-requery! Loader requeries.  

    mAdapter = new SimpleCursorAdapter(context, layout, c, FROM, TO, flags); 
} 


@Override 
public void onActivityCreated(Bundle savedInstanceState) 
{ 
    super.onActivityCreated(savedInstanceState); 

    final ListView lv = getListView(); 
    lv.setTextFilterEnabled(true); 
    lv.setOnItemClickListener(new OnItemClickListener() 
    { 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
     {    
      Toast.makeText(getActivity(), " Clicked!" 
        , Toast.LENGTH_SHORT).show(); 
     }   
    }); 
    // each time we are started use our listadapter 
    setListAdapter(mAdapter); 
    // and tell loader manager to start loading 
    getLoaderManager().initLoader(0, null, this); 
} 
@SuppressLint("InlinedApi") 
private static final String SELECTION = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ? Contacts.DISPLAY_NAME_PRIMARY + " LIKE ?" : Contacts.DISPLAY_NAME + " LIKE ?"; 

private String mSearchString; 
private String[] mSelectionArgs = { mSearchString }; 

private static final String[] PROJECTION = 
{ 
     Contacts._ID, 
     Contacts.LOOKUP_KEY, 
     Build.VERSION.SDK_INT 
       >= Build.VERSION_CODES.HONEYCOMB ? 
       Contacts.DISPLAY_NAME_PRIMARY : 
       Contacts.DISPLAY_NAME 
    }; 

private static final String[] FROM = { Contacts.DISPLAY_NAME_PRIMARY }; 
private static final int[] TO = { android.R.id.text1 }; 
@Override 
public Loader<Cursor> onCreateLoader(int id, Bundle args) 
{ 

    Uri contentUri = Contacts.CONTENT_URI; 

    return new CursorLoader(getActivity(), Contacts.CONTENT_URI, PROJECTION, null, null, Contacts.DISPLAY_NAME+" ASC"); 
} 
@Override 
public void onLoadFinished(Loader<Cursor> loader, Cursor data) 
{ 

    mAdapter.swapCursor(data); 
} 
@Override 
public void onLoaderReset(Loader<Cursor> loader) 
{ 

    mAdapter.swapCursor(null); 
} 
ためのものですので、助けにはならないのサンプルコードをダウンロード

答えて

0

は、どのように私は私があなたのPROJECTION配列を編集し、関連付けられた電話番号がありません場合は進まないようにHAS_PHONE_NUMBER列を追加することで開始したい数字の形の接触

を得ることができます。

、あなたは(あなたのニーズに応じてタイプの制約に注意してください、そうで編集)このような何かを行うことができ、あなたの連絡先のIDを使用している場合があります:

Cursor cursorPhone = getContentResolver() 
        .query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
         new String[]{ ContactsContract.CommonDataKinds.Phone.NUMBER }, 
         ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ? AND " + 
         ContactsContract.CommonDataKinds.Phone.TYPE + " = " + 
         ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE, 
        new String[]{ contactId }, 
        null); 

if (cursorPhone.moveToFirst()) { 
    contactNumber = cursorPhone.getString(cursorPhone 
      .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
} 

cursorPhone.close(); 
関連する問題