2012-04-01 24 views
0

私は、EditText、Button、およびListViewをmain.xmlファイルに追加しました。ユーザーはフルネームまたは名前のアルファベットを入力し、ボタンをクリックします。ボタンクリックイベントは、ユーザクエリに対応する連絡先リストに存在するすべての名前と電話番号を表示します。コンテンツプロバイダ例外をスローする

これは、onClickの機能のために私のコードです:

Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_FILTER_URI, editText.getText().toString()); 
    Cursor idCursor = getContentResolver().query(lookupUri, null, null, null, null); 

    startManagingCursor(idCursor);   

    String wherestmt = ContactsContract.Data.CONTACT_ID + " = " + idCursor + " And " + ContactsContract.Data.MIMETYPE + " = " + ContactsContract.CommonDataKinds.Phone.CONTENT_URI + "'";   
    Cursor datacursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI,null,wherestmt,null,null); 

    int nameIdx = datacursor.getColumnIndexOrThrow(ContactsContract.Data.DISPLAY_NAME); 
    int phoneIdx = datacursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER); 

    datacursor.moveToFirst(); 

    list = new ArrayList<String>(); 

    do{ 

     String name = datacursor.getString(nameIdx); 
     String phone = datacursor.getString(phoneIdx); 
     list.add(name + " " + phone);   

    }while(datacursor.moveToNext()); 

    ListAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,list); 
    listView.setAdapter(adapter); 

しかし、私は行を次のように例外を取得しています:

Cursor datacursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI,null,wherestmt,null,null); 

例外のようなものを伝えます:

android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135) 


FATAL EXCEPTION: main E/AndroidRuntime(1287): android.database.sqlite.SQLiteException: near "@412c63d0": syntax error: ,[email protected] And mimetype = 'content://com.android.contacts/data/phones')) 04-01 13:48:46.616: E/AndroidRuntime(1287): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:179) 04-01 13:48:46.616: E/AndroidRuntime(1287): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135) 
+0

任意のヘルプ??????? – WhoAmI

答えて

0

どこにエラーがあるかもしれませんが、ContactsContract.CommonDataKinds.Phone.CONTENT_URIの前に'を忘れています:

String wherestmt = ContactsContract.Data.CONTACT_ID + " = " + idCursor + " And " + ContactsContract.Data.MIMETYPE + " = " + ContactsContract.CommonDataKinds.Phone.CONTENT_URI + "'"; 

への変更:

String wherestmt = ContactsContract.Data.CONTACT_ID + " = " + idCursor + " And " + ContactsContract.Data.MIMETYPE + " = '" + ContactsContract.CommonDataKinds.Phone.CONTENT_URI + "'"; 
+0

はい、それは間違いでした、私はそれを修正し、アプリケーションを再度実行しようとしましたが、同じ例外がありました:( – WhoAmI

+0

は完全なlogcatエラーメッセージを必要とし、連絡先権限を追加することを忘れていますか? – idiottiger

+0
0

あなたがNULLeditText.getText().toString());で空のためにチェックしています。私は問題がどこにあるのだろうと思う。

+0

エミュレータでアプリケーションをテストしているときに、レコードをフェッチするためのボタンをクリックする前にいくつかの値を入力しています。この場合、EditTextフィールドにnullまたは空のチェックを入れる必要がありますか?私はその理由のために考えていない – WhoAmI

+0

あなたは確かに、その常にダブルチェックするための良いアイデアを確認することができます。 – Mayank

+0

それはあなたの問題でしたか?私の悪い、私はそれを考え、自分自身にそれはあまりにも明白だと言った....良いあなたはそれが働いた。 – Mayank