0

我正在逐步完成“专业 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);
        }
    });
}

我想也许我做错了什么,所以我从书源代码中运行了相应的示例并得到了同样的错误。任何想法这里可能有什么问题?

4

3 回答 3

5

尝试改变

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

至 :

Intent intentContact = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);

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

于 2012-10-06T19:24:16.390 回答
2

我刚刚浏览了这本书中的相同样本。内容 URI "content://contacts" 无效并且缺少权限。它应该被定义为

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

权限“选择器”是整个提供者的任意名称。

于 2012-10-18T03:23:58.347 回答
0

您的 android manifest.xml 中是否有正确的权限?

你需要:

android.permission.READ_CONTACTS

来自http://developer.android.com/reference/android/Manifest.permission.html

于 2012-10-06T19:10:26.133 回答