Android 为什么会有这样的情况;无法获取以下项的类型:content://contacts/"

Android 为什么会有这样的情况;无法获取以下项的类型:content://contacts/",android,android-contacts,android-contentresolver,Android,Android Contacts,Android Contentresolver,我正在逐步阅读“专业Android 4应用程序开发”中的教程。在第5章中,有一个简单的应用程序演示如何选择联系人并打印结果 在我进入应用程序并对其进行测试后,我发现以下错误: 10-06 11:29:04.596:W/ContentResolver(1073):无法获取以下内容的类型:content://contacts/ (URI:content://contacts/,调用用户:android.uid.system:1000,调用包是:[com.android.keychain,com.an

我正在逐步阅读“专业Android 4应用程序开发”中的教程。在第5章中,有一个简单的应用程序演示如何选择联系人并打印结果

在我进入应用程序并对其进行测试后,我发现以下错误:

10-06 11:29:04.596:W/ContentResolver(1073):无法获取以下内容的类型:content://contacts/ (URI:content://contacts/,调用用户:android.uid.system:1000,调用包是:[com.android.keychain,com.android.settings,android,com.android.providers.settings,com.android.inputdevices]之一)

此字符串在以下方法中引用:

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_contact_picker_tester);

    Button  button  = (Button) findViewById(R.id.pick_contact_button);

    button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent  intent  = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts/"));
            startActivityForResult(intent, PICK_CONTACT);
        }
    });
}

我想可能是我做错了什么,所以我从中运行了相应的示例,得到了相同的错误。你知道这里可能有什么问题吗?

你在android manifest.xml中有正确的权限吗

你需要:

android.permission.READ_CONTACTS

尝试更改

Intent  intent  = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts/"));
致:


我认为您的uri不正确,这就是它抛出类型错误的原因。

我刚刚查看了本书中的相同示例。“内容URI”content://contacts“无效,并且缺少。它应该被定义为

Intent intent = new Intent(Intent.ACTION_PICK, Uri.parse("content://picker/contacts/"));
权限“picker”是整个提供程序的任意名称

Intent intent = new Intent(Intent.ACTION_PICK, Uri.parse("content://picker/contacts/"));