0
私は電話の最近の連絡先を表示するアプリケーションを持っています。 私は最近の連絡先をフェッチするために以下のコードを使用しましたが、実行しようとすると次のエラーが表示されます。最近の連絡先をフェッチする最近の連絡先にエラーが発生しました
java.lang.IllegalStateException:行0、列-1を CursorWindowから読み取れませんでした。 からデータにアクセスする前に、カーソルが正しく初期化されていることを確認してください。ここで
コードをフェッチし、私の最近の連絡先である:
ContentResolver cr = getActivity().getContentResolver();
String[] projection = new String[] {ContactsContract.Contacts._ID}; // you can add more fields you need here
int oneDay = (1000 *3600 * 24);
long last24h = (System.currentTimeMillis() - oneDay);
Cursor cur=cr.query(CallLog.Calls.CONTENT_URI,null,null,null,null);
String phone = null;
String emailContact = null;
String image_uri;
Bitmap bitmap;
if (cur.getCount() > 0)
{
while (cur.moveToNext())
{
String id = cur.getString(cur
.getColumnIndex(ContactsContract.Contacts._ID));
String name = cur
.getString(cur
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
image_uri = cur
.getString(cur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_URI));
if (Integer
.parseInt(cur.getString(cur
.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
{
Cursor pCur = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = ?", new String[]{id}, null);
while (pCur.moveToNext())
{
phone = pCur
.getString(pCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
// contactid=pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
/* phonenumber.add(pCur
.getString(pCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));`*/
}
pCur.close();
Cursor emailCur = cr.query
(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID
+ " = ?", new String[]{id}, null);
while (emailCur.moveToNext())
{
emailContact = emailCur
.getString(emailCur
.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
if(TextUtils.isEmpty(emailContact)||emailContact.equalsIgnoreCase(null)||emailContact.equalsIgnoreCase(""))
{
emailContact="";
}
else
{
}
/* emailType = emailCur
.getString(emailCur
.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));*/
}
emailCur.close();
}
if (image_uri != null)
{
System.out.println(Uri.parse(image_uri));
try
{
bitmap = MediaStore.Images.Media
.getBitmap(getActivity().getContentResolver(),
Uri.parse(image_uri));
System.out.println(bitmap);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
recent_list.add(new Contacts(name, phone, image_uri,emailContact));
emailContact="";
phone="";
}
cur.close();
}
else
{
noContact.setVisibility(View.VISIBLE);
search_layout.setVisibility(View.GONE);
}
}
あなたは必要な権限を与えましたか?どのラインで例外が発生していますか? –
はい私はすべての必要な権限を与えました –
電話で最近の通話履歴を表示したい –