ContentProviders:UserDictionary.Words Permission

时间:2017-04-20 07:11:37

标签: android

我正在尝试从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

任何想法?

0 个答案:

没有答案