0

アプリケーション起動時にデータベースを作成したContentProviderを作成しました。ContentProviderはデータベースを削除した後に作成されません

Nowこのアプリケーションでは、ユーザーログアウト時にデータベースを削除する処理を行っています。

その後、再度ログインすると、ContentProviderは、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); 

ありがとうございました:)

関連する問題