5

我正在开发一个 android 应用程序,旨在在屏幕上显示一个列表,其中包含用户字典中的内容。

问题是,当我在 Android API Level 23 Content Provider 中编译和运行应用程序时,会返回一个没有项目、没有任​​何数据的 Cursor。

这很奇怪,因为API前面的23(22、21、19,...)应用程序正常运行并在ListView中显示数据。

以下是我的活动代码:

import android.app.LoaderManager;
import android.content.CursorLoader;
import android.content.Loader;
import android.database.Cursor;
import android.provider.UserDictionary;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Cursor> {

private ListView listView;
private SimpleCursorAdapter adapter;
private static final String[] COLUMNS = {
        UserDictionary.Words.WORD,
        UserDictionary.Words._ID,
        UserDictionary.Words.LOCALE
};

private static final int[] LIST_ITEM_VIEWS = {
        R.id.name,
        R.id.id_word,
        R.id.locale
};

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

    listView = (ListView) findViewById(R.id.list);

    adapter = new SimpleCursorAdapter(getApplicationContext(), R.layout.item_list, null, COLUMNS, LIST_ITEM_VIEWS, 0);

    listView.setAdapter(adapter);

    getLoaderManager().initLoader(0, null, this);

}

@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
    return new CursorLoader(getApplicationContext(), UserDictionary.Words.CONTENT_URI, COLUMNS,
            null, null, UserDictionary.Words.WORD);
}

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
    adapter.swapCursor(data);

}

@Override
public void onLoaderReset(Loader<Cursor> loader) {
    adapter.swapCursor(null);
}
}
4

3 回答 3

2

这是在这里报告的:Android 问题跟踪器

官方回应:按预期工作。自 API 23 以来,此功能已被有效删除。

于 2016-07-13T02:43:58.463 回答
0

API 级别 23 存在一个问题,其中用户字典提供程序返回没有数据的游标,即使已填充字典也是如此。

当前的解决方法是use a device or emulator running API level 22 or lower. 您可以快速制作 API 级别 22 的模拟器。

于 2016-02-23T17:26:56.083 回答
0

根据UserDictionary的Android官方文档,只有IME并且SpellChecker可以访问UserDictionary。

检查此页面上的注释: https ://developer.android.com/reference/android/provider/UserDictionary.html

于 2017-11-07T03:25:36.380 回答