android - 如何在 android 2.1 中使用联系人姓名填充 AutoCompleteTextView

标签 android autocompletetextview

我有一个 AutoCompleteTextView,我希望它在输入时自动完成联系人姓名。问题是 Contacts.People 已被弃用。新文档说要使用 ContactsContract,但我找不到任何合适的教程。任何人都可以给我一个示例代码或指向一个合适的教程。

谢谢。

最佳答案

Android Contact API 2.0

授予访问权限

在应用程序可以查询联系人记录之前,必须通过存储在项目根目录中的 AndroidManifest.xml 文件授予访问权限。在 uses-sdk 语句下方添加以下 uses-permission。

 <uses-permission android:name="android.permission.READ_CONTACTS" />

查询安卓联系人数据库

检索联系方式

基本联系人信息存储在 Contacts 表中,详细信息存储在单独的表中以进行规范化。在Android 2.0 中查询基本联系人记录的URI 存储在ContactsContract.Contacts.CONTENT_URI 中。 打包 higherpass.TestContacts;

import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;

public class TestContacts extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        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
                }
            }
        }
    }
}

此应用程序与任何其他 Android 应用程序一样启动。首先在cr中创建一个ContentResolver实例。然后使用 ContentResolver 实例查询数据库并返回一个包含联系人列表的 Cursor。针对存储在 ContactsContract.Contacts.CONTENT_URI 中的 URI 执行查询。接下来检查游标是否包含记录,如果是,则循环遍历它们。记录 ID 字段存储在 id 变量中。这将在以后用作 where 参数。显示名称字段也存储在字符串名称中。

阅读更多关于 Working With Android Contacts 的信息

关于android - 如何在 android 2.1 中使用联系人姓名填充 AutoCompleteTextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3260988/

相关文章:

android - 从 strings.xml 中提取值

android - 在 Android 中收听有线耳机按钮

android - AutoCompleteTextView float 提示

android - 将自动完成 TextView 结果显示为键盘上方的建议

android - 在 Android 中扩展过滤器时如何使用 publishResults() 方法?

android - 在 android 4.0 及更高版本中使用 datepicker 时..如何避免日历 View

java - 检查 Activity 是否在 Service 中启动

Android SyncAdapter 陷入无限同步循环

targetAPI = 29 和设备的 Android 版本上的 Android ACTIVITY_RECOGNITION <10

android - 自动完成/自动填充编辑文本 Android