のために働いていない連絡先に名前を通じて数を取得するにはどうすればリンク this oneマルチ単語列
を試してみましたが、それでも私はエラーを取得していますし、不気味作業します。私は自分のコードを投稿しているので、助けてください。 私はクエリで渡すパラメータについて混乱しています。
iは、以下の方法
void get_Number(String name)
{
//String name = "Daddy";
String number = null;
String args[]= {name};
ContentResolver cr = getContentResolver();
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
"DISPLAY_NAME = ?", args, null);
if (cursor.moveToFirst()) {
String contactId = cursor.getString(cursor
.getColumnIndex(BaseColumns._ID));
Cursor phones = cr.query(Phone.CONTENT_URI, null, Phone.CONTACT_ID
+ " = " + contactId, null, null);
while (phones.moveToNext()) {
number = phones.getString(phones.getColumnIndex(Phone.NUMBER));
int type = phones.getInt(phones.getColumnIndex(Phone.TYPE));
Log.v("TAG3", number);
}
}
the problem is in the line
カーソルカーソル= cr.query(ContactsContract.Contacts.CONTENT_URI、ヌル、 "DISPLAY_NAME =?"、引数、null)を使用しています。
上記の方法は、単一の単語列では有効ですが、マルチワード文字列では機能しません。 連絡先の複数の単語名に対して正しく動作するように修正する方法
the otherway i have tried is
try
{
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
if (cur.getCount() > 0)
{
while (cur.moveToNext())
{
//String iur.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)
{
if(Name.equalsIgnoreCase(name))
{
Cursor tempc=
etContentResolver().query(ContactsContract.CommonDataKinds.
Phone.CONTENT_URI,new String[]
{ContactsContract.CommonDataKinds.Phone.NUMBER},
ContactsContract.CommonDataKinds.Phone._ID+
"="+cur.getString(cur.getColumnIndex
(ContactsContract.Contacts._ID)), null,null);
tempc.moveToFirst();
//retrieve the phone number
number =
tempc.getString(cur.getColumnIndex
(ContactsContract.PhoneLookup.NUMBER));
}
}
}
}
}
catch (Exception e)
{
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}
if(number!=null)
txt.append(number + "\n");
else
txt.append("No name");
問題がif(Name.equalsIgnoreCase(name))
句にネストコードです。 私はカーソル変数から数値を取得するさまざまな方法を試みましたが、エラーが表示されています。連絡先に名前が一致する場合は、番号を取得する正しい方法を教えてください。前もって感謝します。
誰かが私は...過去2日間
それをしようとしています助けてください、これはlogcat
2月29日16の出力である:56:04.458:E/CursorWindow(1197):フィールドスロット0、-1に対する要求が正しくありません。 numRowsの数= 1、numColumnsの= 2番目のコードスニペットで1
2番目の方法で次のエラーが表示されます。フィールドスロット1の要求が正しくありません。 numRows = 2、numColumns = 23、この問題の解決策を教えてください – siva