2015-12-12 138 views
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以來已被有效刪除。