Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f1b6e36 authored by Håkan Kvist's avatar Håkan Kvist
Browse files

Call CardDatabaseHelper.getInstance() when used and not in onCreate

Providers can be created before onCreate is called on the application.
Calling CardDatabaseHelper.getInstance() too early will cause
ContextualCardLoader to call getAppllicationContext before application
has been fully started.

Postpone calling CardDatabaseHelper.getInstance() until database is
accessed.

Test: Start device with sim card inserted and Pin enabled on sim.
  Wait some time before entering sim pin. After entering pin, open
  settings. Verify that settings does not crash.
  Verify that there is no contentProvider exceptions from settings in log.
Bug: 154076590
Change-Id: Id0b6294ca2aeebdc71076299928c4dea5145ba33
parent 27b45780
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -65,11 +65,8 @@ public class CardContentProvider extends ContentProvider {
        URI_MATCHER.addURI(CARD_AUTHORITY, CardDatabaseHelper.CARD_TABLE, MATCH_CARDS);
    }

    private CardDatabaseHelper mDBHelper;

    @Override
    public boolean onCreate() {
        mDBHelper = CardDatabaseHelper.getInstance(getContext());
        return true;
    }

@@ -84,7 +81,8 @@ public class CardContentProvider extends ContentProvider {
    public int bulkInsert(Uri uri, ContentValues[] values) {
        final StrictMode.ThreadPolicy oldPolicy = StrictMode.getThreadPolicy();
        int numInserted = 0;
        final SQLiteDatabase database = mDBHelper.getWritableDatabase();
        final CardDatabaseHelper DBHelper = CardDatabaseHelper.getInstance(getContext());
        final SQLiteDatabase database = DBHelper.getWritableDatabase();
        final boolean keepDismissalTimestampBeforeDeletion = getContext().getResources()
                .getBoolean(R.bool.config_keep_contextual_card_dismissal_timestamp);
        final Map<String, Long> dismissedTimeMap = new ArrayMap<>();
@@ -168,7 +166,8 @@ public class CardContentProvider extends ContentProvider {
            final SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
            final String table = getTableFromMatch(uri);
            queryBuilder.setTables(table);
            final SQLiteDatabase database = mDBHelper.getReadableDatabase();
            final CardDatabaseHelper DBHelper = CardDatabaseHelper.getInstance(getContext());
            final SQLiteDatabase database = DBHelper.getReadableDatabase();
            final Cursor cursor = queryBuilder.query(database,
                    projection, selection, selectionArgs, null /* groupBy */, null /* having */,
                    sortOrder);