如何获取联系方式?

Posted

技术标签:

【中文标题】如何获取联系方式?【英文标题】:How to get contact info? 【发布时间】:2013-06-16 11:47:20 【问题描述】:

所以我很擅长获取联系人。我将联系人分配给列表视图并且能够看到它们。当我单击一个联系人时,它会启动一个新活动,目前我只想显示该联系人的 ID。所以我所做的是将联系人 ID 设置为“set_id”,当您单击联系人时,它会调用“get_id”,将 ID 分配给 contactId,并将其传递给 putextra...

导入 java.util.ArrayList;

导入android.app.Activity;导入 android.content.CursorLoader; 导入android.content.Intent;导入android.database.Cursor;进口 android.net.Uri;导入android.os.Bundle;进口 android.provider.ContactsContract;导入 android.view.Menu;进口 android.view.查看;导入 android.widget.AdapterView;进口 android.widget.ListView;

公共类 ListViewActivity 扩展 Activity

ListItemDetails Detail;

ListView mListView;
ArrayList<ListItemDetails> details;
Uri contacts;
String contactName;
int contactPic;
int contactId;


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

    mListView = (ListView)findViewById(R.id.listView);
    details = new ArrayList<ListItemDetails>();

    contacts = ContactsContract.Contacts.CONTENT_URI;
    CursorLoader cursorLoader = new CursorLoader(
            this, contacts, null, null, null, null);
    Cursor c = cursorLoader.loadInBackground();

    while (c.moveToNext()) 
        contactId = c.getColumnIndex(ContactsContract.Contacts._ID);
        contactName = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

        Detail = new ListItemDetails();
        Detail.setImage(R.drawable.ic_launcher);
        Detail.setName(contactName);
        Detail.set_id(contactId);
        details.add(Detail);

    
    c.close();

    mListView.setAdapter(new CustomListAdapter(details, this));
    mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() 
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) 

            Intent i = new Intent(ListViewActivity.this, ContactDetails.class);
            i.putExtra("contactId", contactId);
            startActivity(i);
        
    );

现在,在新的 Activity 中,我只想让它暂时显示联系人 ID(仍在学习中)。所以我调用Bundle getInt,将int值分配给“contactId”并将其显示在屏幕上......无论我选择什么联系人,我都会显示id = 0。我做错了什么?这是第二个活动:

导入android.app.Activity;导入android.os.Bundle;进口 android.widget.TextView;

公共类 ContactDetails 扩展 Activity

int contactId;

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.contactinfo);

    Bundle extras = new Bundle();
    contactId = extras.getInt("contactId");

    TextView contactName = (TextView)findViewById(R.id.contactName);

    contactName.setText("You clicked " + contactId);
 

tl;dr 无论我在列表视图中选择什么联系人,都会显示联系人 ID = 0,为什么?

【问题讨论】:

【参考方案1】:
Bundle extras = new Bundle();

当您这样做时,您会创建一个名为 extras 的新 Bundle,而不是您添加到 activivty 中的 extras。

改为尝试:

contactId = getIntent().getIntExtra("contactId",0);

【讨论】:

非常感谢。直到今晚我才能尝试,但如果它有效,我会确保检查你的答案。再次感谢! 我现在可以测试它了...现在当我点击一个联系人时,无论是哪一个(我的模拟器中有 5 个),它都说我点击了 ID #8 是的,contactId = c.getColumnIndex(ContactsContract.Contacts._ID);您正在阅读contactId ColumnIndex 而不是Id 好的,我花了最后一个小时处理您的最后一条评论,但找不到好的解决方案。我找到了一百种不同的方式来获取联系信息。暂时忘记我的代码,您能否指出您认为最有效的方法是什么? 忘记我的最后一个问题。有朋友帮我。感谢您的所有帮助

以上是关于如何获取联系方式?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取用户经常联系的联系人?

如何从listview android中的姓名获取联系方式

如何从 Android 中的联系人列表中获取联系人?使用联系提供商

如何从联系人中获取电子邮件和姓氏?

如何只获取联系人的手机号码

从百度地图上面获取商户联系方式请问有没有工具得到这些百度地图上店铺的数据信息?