删除数据库之后ContentProvider的不是所谓的onCreate(ContentProvid

2019-09-29 20:30发布

我创建的ContentProvider它创建的应用程序启动一个数据库

现在,在该应用程序,我做删除数据库中的应用程序时,用户注销的过程。

之后,当我再来登录,该ContentProvider的不能叫overrided类的onCreate()。

有没有办法使用的ContentProvider重建数据库?

Answer 1:

我找到了解决方案,

首先我提到在定制的ContentProvider刷新/重载数据库参考恢复后却不满意答案,因为它只是关闭数据库。

所以,我创建了我的回答如下:

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);

谢谢 :) :)



文章来源: ContentProvider not called onCreate after deleting database