标签: android-contacts

Android - 使用AccountManager /手机所有者的名字和姓氏获取UserData

我想预先填充我的应用程序中的一些字段,以帮助用户在我的应用程序中订阅服务时.

那么我如何获得设备所有者的名字和姓氏.我想使用与Google帐户绑定的默认信息; 到目前为止我得到了这个:

AccountManager am = AccountManager.get(this);
Account[] accounts = am.getAccounts();
for (Account account : accounts) {
    if (account.type.compareTo("com.google") == 0)
    {
        String possibleEmail = account.name;
        // how to get firstname and lastname here?
    }             
}
Run Code Online (Sandbox Code Playgroud)

如果你建议,我愿意采取其他方法 - 只要我能得到所有者的电子邮件,名字和姓氏.

android android-contacts

15
推荐指数
1
解决办法
1万
查看次数

如何从本机联系人/内容解析器获取联系人的Facebook ID或URL?

如何通过Facebook同步适配器获取已同步到本机联系人应用程序的联系人的Facebook ID或URL?

我浏览了不同的网址,但没有看到有关Facebook的任何信息.

我试过了

ContactsContract.Data.CONTENT_URI
ContactsContract.CommonDataKinds.Email.CONTENT_URI
ContactsContract.CommonDataKinds.Phone.CONTENT_URI
ContactsContract.Contacts.CONTENT_URI
Run Code Online (Sandbox Code Playgroud)

作为以下代码中的URI:

    Uri uri = ContactsContract.Data.CONTENT_URI;
    Cursor c = getContentResolver().query(uri, null, null, null, null);
    while (c.moveToNext()) {
        for (int i=0; i<c.getColumnCount(); i++) {
            Log.d(TAG, c.getColumnName(i) + ": " +  c.getString(i));
        }
        Log.d(TAG, "==================================");

    }
Run Code Online (Sandbox Code Playgroud)

我确实得到了一个列值

contact_status_res_package: com.facebook.katana
Run Code Online (Sandbox Code Playgroud)

在这个转储中,我也获得了联系人状态(contact_status列),但我无处可查看此联系人的facebook网址或ID.

android facebook android-contentprovider android-contacts

14
推荐指数
1
解决办法
5718
查看次数

如何在将联系信息加载到listview时避免重复的联系人姓名(数据)?

我正在填充联系人列表详细信息以成功列出视图.我的代码:

  String order = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC";
  Cursor   curLog =  getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null,order); 
Run Code Online (Sandbox Code Playgroud)

如何在列表视图中避免重复数据,因为联系人详细信息如果已加入联系人,即加入手机和Google,则会重复?.屏幕就像在此输入图像描述

我想以编程方式选择只有1个名字而不是两个名字?任何想法如何选择?

android android-contacts

14
推荐指数
1
解决办法
8298
查看次数

将生日变成联系人数据的正确方法是什么?

背景

我正在尝试更新联系人数据,并将每个数据的生日.

问题

似乎对于我尝试的每个设备(我甚至没有尝试过那么多设备),插入有一个或多个这些问题:

  • 查看/编辑联系人时,无法单击和编辑brithdate.
  • 查看/编辑联系人时,显示的格式与用户输入生日时显示的格式不同
  • 缺少一年,或完全错误的一年.
  • 查看联系人时,未显示生日,但在编辑时,会显示生日.另外,相反.

我试过的

我尝试过使用时间戳和完整的ISO8601格式(因为这个链接,意思是"yyyy-MM-dd HH:mm:ss").我也试过"yyyy-MM-dd",我尝试使用设备日期的默认格式.

所有人都有上述问题(每个问题至少有一个).

这是一段代码:

final Date birthdate = ...
// String birthdateStr = new SimpleDateFormat("yyyy-MM-dd").format(birthdate);
// String birthdateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()).format(birthdate);
// String birthdateStr = new SimpleDateFormat(((SimpleDateFormat) java.text.DateFormat.getDateInstance(java.text.DateFormat.DEFAULT, Locale.getDefault())).toLocalizedPattern(),Locale.getDefault()).format(birthdate);


String birthdateStr = Long.toString(birthdate.getTime()/1000);
final Builder builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
builder.withValue(Data.RAW_CONTACT_ID, ...)
       .withValue(ContactsContract.Data.MIMETYPE, Event.CONTENT_ITEM_TYPE)
       .withValue(ContactsContract.CommonDataKinds.Event.START_DATE, birthdateStr)
       .withValue(ContactsContract.CommonDataKinds.Event.TYPE,
                    ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY);
Run Code Online (Sandbox Code Playgroud)

当然,我也在这里看过这个问题,并发现了类似的问题,但是提出的解决方案似乎都没有奏效.

这个问题

我应该如何将生日插入联系人?为什么每个设备都有自己的方式来解释日期?生日的正确标准是什么?

android date android-contacts android-sqlite

14
推荐指数
1
解决办法
553
查看次数

某些操作不会调用自定义ContactsDirectoryProvider

我已经实现了自定义ContactsDirectoryProvider,当Contacts或Dialer应用程序使用表单内容的 URI搜索联系人时,它可以正常工作://com.android.contacts/data/phones/filter

但是,当InCallUI或CallLog尝试使用URis 内容检索联系信息时 :/ contacts/phone_lookup不会调用我的提供者 的查询方法.

任何建议请....

PS我没有实现单独的同步提供程序可能这是问题吗?

android android-contentprovider android-contacts

14
推荐指数
1
解决办法
186
查看次数

将我的应用与联系人集成

我想将我的应用程序与联系人管理器集成:

更确切地说:

当我在手机中运行联系人应用程序然后我点击任何头像时,弹出一个Popup(快速联系人徽章)窗口会显示一些应用程序(联系人,邮件等)我想在那个地方添加我的应用程序.

那可能吗?

我希望能够清楚.

提前致谢.

android contact contacts android-contacts

13
推荐指数
1
解决办法
6158
查看次数

将联系人导出为VCF文件

我想将手机通讯录导出到外部存储区域.我没有使用这种方法.有人指导我这样做吗?

android vcf android-contacts

13
推荐指数
5
解决办法
2万
查看次数

Android 3.0 - 如何通过ContactsContract检索所有联系人

我正在开发Android Honeycomb(v3.0)应用程序,该应用程序需要显示存储在设备上注册的Google帐户中的所有联系人.我遇到的一个问题是,我只能检索"我的联系人","Android中已加星标"和"其他联系人"中可用的联系人.我还希望能够从"目录"中检索联系人.我认为"目录"部分是Google向希望向其他人提供其域内所有成员/员工目录的组织和公司提供的功能.请看下面的截图:

目录

到目前为止,我的清单文件中有以下行:

<uses-permission android:name="android.permission.READ_CONTACTS" />
Run Code Online (Sandbox Code Playgroud)

我试过使用这段代码:

Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
while (cursor.moveToNext()) { 
    String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
} 
cursor.close();
Run Code Online (Sandbox Code Playgroud)

在我的情况下,"我的联系人"和"在Android中加星标"是空的.但是,获得了"其他联系人"中的(1)联系人.但是,"目录"包含数百个未检索的联系人.

我的问题:有没有办法确保检索"目录"中的联系人?我知道我可以简单地使用网络浏览器复制联系人,然后将它们同步到设备,但如果新的联系人被添加到"目录",我必须每次都手动执行此操作,所以这不是对我来说很棒的选择.请指教.

android google-contacts-api contactscontract android-contacts android-3.0-honeycomb

13
推荐指数
1
解决办法
1872
查看次数

Android从收件箱中获取短信,优化了读取所有邮件并对其进行分组的方式

您好我正在实施一个短信应用程序,现在能够检索所有消息与他们各自的联系信息,如显示名称,照片uri ..并在一个自定义列表中显示它们在项目点击带您进行相应的讨论.在这里我的问题是同步所有这些消息的时间,

  1. 我需要优化这个时间.
  2. 每次我在讨论视图中发送新消息并返回到最近的聊天时,我只需要更新特定项目,而不是整个列表.

这是我的代码:

ReadSMS.java:

public class ReadSMS {

    ArrayList<HashMap<Contact, ArrayList<OneComment>>> recentChats;

    Application _context;

    public ReadSMS(Application context) {
        this._context = context;
        this.recentChats = ((ChatApplication) _context).getChats();
    }

    public ArrayList<HashMap<Contact, ArrayList<OneComment>>> getSMS() {

        // Init
        ArrayList<SmsMsg> smsMsgs = new ArrayList<SmsMsg>();
        TreeSet<Integer> threadIds = new TreeSet<Integer>();

        Uri mSmsinboxQueryUri = Uri.parse("content://sms");
        Cursor cursor = _context.getContentResolver().query(
                mSmsinboxQueryUri,
                new String[] { "_id", "thread_id", "address", "date", "body",
                        "type" }, null, null, null);

        String[] columns = new String[] { "address", "thread_id", "date",
                "body", "type" };
        if (cursor.getCount() …
Run Code Online (Sandbox Code Playgroud)

android android-contentresolver android-contentprovider android-contacts

12
推荐指数
2
解决办法
1万
查看次数

如何检查Android手机上的联系人是否启用了whatsapp?

对于我的地址簿中给定的号码,我需要查看号码是否启用了whatsapp.(我们的想法是选择SMS/WhatsApp来启动文本意图)

可以说,我在联系人下面有两个号码,而且我需要知道哪个号码启用了whatsapp.

Nexus 4上的"People"应用程序显示了两个联系人号码,还有一个下面有一个CONNECTIONS部分,它只显示了WhatsApp可能的联系方式.

有没有办法查找(如人们的应用程序如何)?

android android-contacts whatsapp

12
推荐指数
1
解决办法
9584
查看次数