gpt4 book ai didi

android - 删除数据库后 ContentProvider 未调用 onCreate

转载 作者:行者123 更新时间:2023-11-29 19:21:57 29 4
gpt4 key购买 nike

我已经创建了 ContentProvider,它会在应用程序启动时创建一个数据库

现在在那个应用程序中,我正在执行当用户从应用程序注销时删除数据库的过程。

之后再次登录时,ContentProvider 无法调用覆盖类的onCreate()

有什么方法可以使用 ContentProvider 重新创建数据库吗?

最佳答案

我找到了解决方案,

首先我提到了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);

谢谢 :) :)

关于android - 删除数据库后 ContentProvider 未调用 onCreate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42249870/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com