ContentProvider:Cursor返回0行

时间:2017-04-19 11:58:12

标签: java android

我尝试使用ContentResolver来获取表中的数据:UserDictionary.Words。

无论我做什么,光标中都没有检索到任何行,因此我对cursor.getCount()持续获得0。

我将所需的权限放在清单文件中:
uses-permission android:name =“android.permission.READ_CONTACTS”
uses-permission android:name =“android.permission.WRITE_CONTACTS”

这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ContentResolver resolver = getContentResolver();
    String[] projection = new String[]{BaseColumns._ID, UserDictionary.Words.WORD};
    Cursor cursor =
            resolver.query(UserDictionary.Words.CONTENT_URI,
                    projection,
                    null,
                    null,
                    null);

    if (cursor.moveToFirst()) {
        do {
            long id = cursor.getLong(0);
            String word = cursor.getString(1);
            // do something meaningful
        } while (cursor.moveToNext());
    }
}

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

您确定词典数据库中有特定的单词吗? 有些手机型号使用自定义键盘,不使用标准的Android用户词典数据库。

转到设置 - > 语言&输入 - > 键盘 - > 您使用的键盘。如果没有词典部分,则很可能您当前的键盘不会将您的特定字词保存到数据库。

如果您正在将您的应用用于学习目的,则有解决方法。从GooglePlay安装Google键盘,添加一些特定的字词然后重试。

<强> P.S。 API 23问题

报告了另一个已知问题--API 23错误here。因此,如果您的设备运行API 23,您可以使用不同的API创建Android模拟器并检查您的代码。