0

Я создал ContentProvider, который создает одну базу данных при запуске приложения.ContentProvider не вызывается onCreate после удаления базы данных

Теперь в этом приложении, я делаю процесс удаления базы данных при выходе пользователя из приложения.

После этого, когда я прихожу снова, чтобы войти в систему, Контент-провайдер не может позвонить onCreate() переопределенного класса.

Есть ли способ воссоздать базу данных с помощью ContentProvider?

ответ

1

Я нашел решение, как,

Прежде всего я говорил Refresh/Reload database reference in custom ContentProvider after restore, но не удовлетворен ответом, потому что его просто для закрытия базы данных.

Так что я создал свой ответ, как показано ниже:

DBHelper.java

/** 
* Delete database 
*/ 
public static void reCreateDatabase(Context mContext) { 
    ContentResolver resolver = mContext.getContentResolver(); 
    ContentProviderClient client = resolver.acquireContentProviderClient(KOOPSContentProvider.AUTHORITY); 

    assert client != null; 
    KOOPSContentProvider provider = (KOOPSContentProvider) client.getLocalContentProvider(); 

    assert provider != null; 
    provider.resetDatabase(); 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) 
     client.close(); 
    else 
     client.release(); 

    LOGD("Database Deleted..."); 
} 

public void removeDatabase(Context mContext) { 
    mContext.deleteDatabase(DATABASE_NAME); 
    LOGD("Database Deleted..."); 
} 

KOOPSContentProvider.java

public void resetDatabase() { 
    if(dbHelper != null) { 
     dbHelper.removeDatabase(getContext()); 
     dbHelper = new DbHelper(getContext()); 
    } else { 
     LOGD("Database NULL"); 
    } 
} 

ИСПОЛЬЗОВАНИЯ Как:

DbHelper.reCreateDatabase(mContext); 

Спасибо :) :)

Смежные вопросы