Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 把今天过生日的人找来_Android_Sqlite_Android Sqlite - Fatal编程技术网

Android 把今天过生日的人找来

Android 把今天过生日的人找来,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我想获取今天(即当天)过生日的联系人的信息。下面是我的程序。 上个月我测试时它工作正常,但现在它没有返回正确的数据 Uri uri = ContactsContract.Data.CONTENT_URI; String[] projection = new String[] { ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataK

我想获取今天(即当天)过生日的联系人的信息。下面是我的程序。 上个月我测试时它工作正常,但现在它没有返回正确的数据

Uri uri = ContactsContract.Data.CONTENT_URI;

    String[] projection = new String[] {
            ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
            ContactsContract.CommonDataKinds.Event.CONTACT_ID,
            ContactsContract.Contacts._ID,
            ContactsContract.Contacts.STARRED,
            ContactsContract.Contacts.TIMES_CONTACTED,
            ContactsContract.CommonDataKinds.Event.START_DATE };

    Calendar cal = Calendar.getInstance();
    int month = cal.get(Calendar.MONTH);
    int day = cal.get(Calendar.DATE);
    String date = "'%-" + (month > 8 ? month : "0" + (month + 1)) + "-"
            + (day > 9 ? day : "0" + day) + "'";

    String where = ContactsContract.Data.MIMETYPE + "= ? AND "
            + ContactsContract.CommonDataKinds.Event.TYPE + " IN ( "
            + ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY
            + " )  AND "
            + ContactsContract.CommonDataKinds.Event.START_DATE + " LIKE "
            + date;

    String[] selectionArgs = new String[] { ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE };
    String sortOrder = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME;
    Cursor c=mContext.getContentResolver().query(uri, projection, where,
            selectionArgs, sortOrder);
我的游标c为空。有人能指出我在逻辑上犯的错误吗


谢谢。

错误在于处理月份值的地方。因为10月等于9,所以以字符串“%-9-08”结束

您可以添加更多逻辑来处理此情况,但这确实不是正确的方法。 试试这个:

String date = "'%-" + DateFormat.format("MM-dd",cal).toString() + "'";

尝试调试并检查要传递的每个
参数的值