我正在尝试从UserDictionary.Words数据库中检索一些数据,但我的游标仍然是用空行检索。 我在清单文件中给出了正确的权限:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.developer.p402_contentpeovisers">
<uses-permission android:name="android.permission.READ_USER_DICTIONARY"/>
<uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
这是我的代码:
@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());
}
}
我直接从模拟器中添加了一些单词(设置 - &gt;语言和输入 - &gt;个人词典。然后我点击了加号,我添加了单词),我可以看到确实添加了这些单词(正如您在attatched文件中看到的那样)。另外,可以肯定的是,我使用 adb pull 和sqlite进行了检查,当我直接从模拟器(attatched)输入单词时,我看到数据库确实已更新。
我被告知我需要在运行时添加权限,而我无法理解这个原因..?我研究的书和Android开发者网站都没有提及运行时权限。
P.S:
我正在使用:
compileSdkVersion:25
minSdkVersion:16
targetSdkVersion:25
参考文献:
List of words - emulator
List of words - sqlite
任何想法?