Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.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_Android Intent_Android Contentprovider - Fatal编程技术网

Android 内容提供程序引发异常

Android 内容提供程序引发异常,android,android-intent,android-contentprovider,Android,Android Intent,Android Contentprovider,我在main.xml文件中添加了EditText、Button和ListView。用户将输入全名或名称的一些字母,然后单击按钮。按钮单击事件将显示联系人列表中与用户查询对应的所有姓名和电话号码 这是我的onClick函数代码: Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_FILTER_URI, editText.getText().toString()); Cursor idCursor =

我在main.xml文件中添加了EditText、Button和ListView。用户将输入全名或名称的一些字母,然后单击按钮。按钮单击事件将显示联系人列表中与用户查询对应的所有姓名和电话号码

这是我的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);
异常说明如下内容:

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


FATAL EXCEPTION: main E/AndroidRuntime(1287): android.database.sqlite.SQLiteException: near "@412c63d0": syntax error: ,content.ContentResolver$CursorWrapperInner@412c63d0 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)

可能是您的where有错误,您忘记了
contacts.commonDataTypes.Phone.CONTENT\u 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 + "'";

您是否正在检查
NULL
editText.getText().toString()处是否为空。我想这就是问题所在。

是的,这是一个错误,我更正了它并尝试再次运行应用程序,但得到了相同的异常:(请帮助需要完整的logcat错误消息,您是否忘记了添加联系人权限?我在清单文件中添加了这一行。我无法正确保存logcat错误,dnt knw确切原因…..当它保存在桌面上时,它是一个空的日志文件。您知道原因吗?–好吧,不要保存到桌面,您可以直接复制它在emulator上测试应用程序时,我在单击获取记录的按钮之前输入了一些值,因此在这种情况下,我是否需要对EditText字段进行null或空检查?我不认为是因为这个原因,您可以检查JU吗t当然,反复检查总是一个好主意。这是你的问题吗???我的错,我想到了,然后对自己说这太明显了…很好,你让它工作了。嘿,我通过添加空检查进行了测试,但仍然是同一个问题。问题仍然没有解决。有什么帮助吗?
String wherestmt = ContactsContract.Data.CONTACT_ID + " = " + idCursor + " And " + ContactsContract.Data.MIMETYPE + " = '" + ContactsContract.CommonDataKinds.Phone.CONTENT_URI + "'";