我尝试使用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());
}
}
我该怎么做才能解决这个问题?
答案 0 :(得分:0)
您确定词典数据库中有特定的单词吗? 有些手机型号使用自定义键盘,不使用标准的Android用户词典数据库。
转到设置 - > 语言&输入 - > 键盘 - > 您使用的键盘。如果没有词典部分,则很可能您当前的键盘不会将您的特定字词保存到数据库。
如果您正在将您的应用用于学习目的,则有解决方法。从GooglePlay安装Google键盘,添加一些特定的字词然后重试。
<强> P.S。 API 23问题
报告了另一个已知问题--API 23错误here。因此,如果您的设备运行API 23,您可以使用不同的API创建Android模拟器并检查您的代码。