[英]ContentProvider not called onCreate after deleting database
I have created ContentProvider which creates one Database on application launching. 我创建了ContentProvider,它在应用程序启动时创建了一个数据库 。
Now In that application, I am doing process of deleting database when user logout from app. 现在,在该应用程序中,当用户从应用程序注销时,我正在执行删除数据库的过程。
After that when I come again to login, the ContentProvider cant call onCreate() of overrided class. 之后,当我再次登录时,ContentProvider无法调用覆盖的类的onCreate() 。
Is there any way to recreate database using ContentProvider? 有什么方法可以使用ContentProvider重新创建数据库吗?
I found solution as, 我找到了解决方案,
First of all I referred Refresh/Reload database reference in custom ContentProvider after restore but not satisfied with answer because its just for closing database. 首先, 还原后 ,我在自定义ContentProvider中引用了“刷新/重新加载数据库参考”,但对答案不满意,因为它仅用于关闭数据库。
So I have created my answer as below: 因此,我创建了如下答案:
DBHelper.java 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 KOOPSContentProvider.java
public void resetDatabase() {
if(dbHelper != null) {
dbHelper.removeDatabase(getContext());
dbHelper = new DbHelper(getContext());
} else {
LOGD("Database NULL");
}
}
USE As: 用于:
DbHelper.reCreateDatabase(mContext);
Thank you :) :) 谢谢 :) :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.