0

「ProfessionalAndroid4ApplicationDevelopment」のチュートリアルを進めています。第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);
        }
    });
}

何か間違ったことをしたのではないかと思ったので、Bookのソースコードから対応する例を実行したところ、同じエラーが発生しました。ここで何が間違っているのか考えてみてください。

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 に答える