Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Access UserDictionary Content Provider on android API level 23

I'm developing a android application which aims to show a list on the screen with the contents present in the user dictionary.

The problem is that when I compile and run the application in the Android API Level 23 Content Provider return a Cursor with no item, without any data.

It's strange because the API's preceding 23 (22, 21, 19, ...) the app runs and displays the data in the ListView normally.

Below is the code of my Activity:

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);
}
}
like image 767
Kesley Vaz Avatar asked Oct 30 '22 13:10

Kesley Vaz


1 Answers

This was reported here: Android Issue Traker

Official response: Working as intended. This feature has been remove effectively since API 23.

like image 56
Michael Jota Avatar answered Nov 11 '22 07:11

Michael Jota