質問: new ContentValues(); values.put(COLUMN_VOICE, defaultData1); values.put(COLUMN_VOICE, defaultData2); getContext().getContentResolver().insert(uri, values); } } ```
回答: `close`を試したということは、どこかの`Activity`でも`SQLiteOpenHelper`インスタンスを生成していて、かつ`ContentProvider`でもインスタンスを生成しているということでしょうか。 とすると`SQLiteOpenHelper`のインスタンスが複数生成され、それぞれがトランザクションを確保しているためにロックが掛かっているだけだと思います。 解決策としては、 1. `MyDBHelper`をシングルトンにして`Application`内で使いまわす 2. `MyDBHelper`を直接扱わず、常に`ContentProvider`を経由する この場合、`ContentProvider`を利用されているので、2.がいいと思います。 また、`MyDBHelper#onCreate()`でやっているテーブルの初期値の`insert`は、`ContentProvider`を経由させず、テーブル生成のトランザクション内で直接行うべきだと思います。