나는 목록보기에서 연락처 이름과 번호를 볼 수있는 작은 프로그램을 만들었습니다.인텐 트와 연락처 세부 정보보기
public class showcontacts extends Activity
{
ListView lv;
Uri u;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.listcontacts);
lv=(ListView)findViewById(R.id.listView1);
lv.setOnItemClickListener(new mysellisten());
u=Phone.CONTENT_URI;
shownames();
}
public void shownames()
{
String[] p=new String[] {
Contacts._ID,
Contacts.DISPLAY_NAME,
Contacts.HAS_PHONE_NUMBER,
Phone.NUMBER
};
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '"
+ ("1") + "' and "+ContactsContract.Contacts.HAS_PHONE_NUMBER+"='1'" ;
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME
+ " COLLATE LOCALIZED ASC";
Cursor c=getContentResolver().query(u, p, selection,null, sortOrder);
String from[]=new String[]{ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMBER};
int id[]={R.id.name,R.id.phoneno};
SimpleCursorAdapter sc=new SimpleCursorAdapter(this,R.layout.phoneview, c, from, id);
lv.setAdapter(sc);
}
class mysellisten implements OnItemClickListener
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "called", Toast.LENGTH_SHORT).show();
Uri nu=ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, arg3);
Intent i=new Intent(Intent.ACTION_VIEW,nu);
startActivity(i);
}
}
phoneview는 Imageview와 2 개의 textviews가있는 간단한 xml입니다. 나는 이름과 phonenos를 얻을 수있다. 그러나 listview에서 항목을 클릭하면 표시되는 레코드가 적절하지 않다. 내가 클릭 한 레코드와 일치하지 않는다. 일부 레코드는 빈 화면을 표시 한 후 에뮬레이터를 열어도 목록보기로 돌아 가지 않습니다.
또한 Phone.CONTENT_URI를 사용할 때 연락처 테이블 열을 사용할 수 있지만 Contacts.CONTENT_URI를 사용하는 경우 Phone.NUMBER 필드를 사용할 수없는 이유는 무엇입니까? KINDLY UPDATE.
예 그렇지 않으면 연락처를 보여줄 이유를 수행하는 코드를 찾아주십시오 이용하여 전화 번호를 가져 오지 수 있습니다. – user2779311