Ich entwickle eine Android-Anwendung, die eine Liste auf dem Bildschirm mit den Inhalten im Benutzerwörterbuch anzeigen soll.Zugriff auf UserDictionary Content Provider auf Android API Level 23
Das Problem ist, dass, wenn ich kompilieren und die Anwendung in der Android API Level 23 Content Provider ausführen einen Cursor ohne Element, ohne Daten.
Es ist seltsam, weil die API vor 23 (22, 21, 19, ...) die App ausgeführt wird und die Daten in der ListView normalerweise anzeigt.
Unten ist der Code meiner Aktivität:
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);
}
}
innen '' onLoadFinished' DatabaseUtils # dumpCursor' nennen, was sehen Sie? – pskink
Wenn ich das DatabaseUtils.dumpCursor() verwende, bekomme ich die folgenden Returns: Auf API-Ebene 23 => "System.out:>>>>> Cursor Dumping android. Inhalt. $ @ B465803">>>>> Cursor Dumping android. Inhalt. $ CursorWrapperInner @ 1a8ca936 ContentResolver 0 { Wort = bluu _ id = 2 locale = null } 1 { Wort = blooo _id = 1 locale = de_DE } <<<<< " Auf API-Ebene 23, wenn ich die Methode getCount() vom Cursor-Objekt verwende, gibt die gleiche Null zurück. –
Überprüfen Sie Ihre benutzerdefinierte ContentProvider- "Abfrage" -Methode, warum sie einen leeren Cursor zurückgibt – pskink