Refresh/Reload database reference in custom ContentProvider after restore

前端 未结 4 1457
失恋的感觉
失恋的感觉 2020-12-16 21:57

I use a ContentProvider in my app and everything works great except for one little issue. I have a backup and restore function that backs up the database to a file on the SD

4条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-16 22:36

    If you are targeting >= API 5 you can get a reference to your ContentProvider via a ContentProviderClient, and run a method specific to your implementation:

    ContentResolver resolver = context.getContentResolver();
    ContentProviderClient client = resolver.acquireContentProviderClient("myAuthority");
    MyContentProvider provider = (MyContentProvider) client.getLocalContentProvider();
    provider.resetDatabase();
    client.release();
    

    Add the reset method to your ContentProvider implementation:

    public void resetDatabase() {
        mDatabaseHelper.close();
        mDatabaseHelper = new MyDatabaseOpenHelper(context);
    }
    

提交回复
热议问题