5

我正在开发一个Android应用程序,其目的是在屏幕上显示用户字典中显示的内容列表。在Android API级别23上访问UserDictionary内容提供者

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

这很奇怪,因为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); 
} 
} 
+0

内'onLoadFinished'调用'DatabaseUtils#dumpCursor',你怎么看? – pskink

+0

当我使用DatabaseUtils.dumpCursor()时,我得到以下回报: 关于API级别23 =>“System.out:>>>>> cursor android.contact。$ @ b465803 ”>>>>>光标倾倒机器人。内容。$ CursorWrapperInner @ 1a8ca936 ContentResolver的 0 { 字= bluu _ ID = 2 语言环境= NULL } 1 { 字= blooo _id = 1 locale = en_US } <<<<<“ 当我使用Cursor对象的方法getCount()时,在API级别23上,同样返回零。 –

+0

所以请检查您的自定义ContentProvider“查询”方法为什么它返回空游标 – pskink

回答

0

有在API级别23,其中用户词典提供返回没有数据光标,填充了字典,即使是一个问题。

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

2

这是报告如下:Android Issue Traker

官方回应:如预期运行。此功能自API23以来已被有效删除。