私のアプリ ウィジェットはデータベースを使用し、最初の実行時にデータベース ディレクトリにコピーするアクティビティがアセット ディレクトリにプリロードされます。
ただし、その前にウィジェットを挿入すると、データベースがまだ存在しないため、例外がスローされます。
とにかくウィジェットがファイルをチェックし、存在しない場合は、アセットから取得して、アクティビティの代わりにコピーしますか?!?
私のアプリ ウィジェットはデータベースを使用し、最初の実行時にデータベース ディレクトリにコピーするアクティビティがアセット ディレクトリにプリロードされます。
ただし、その前にウィジェットを挿入すると、データベースがまだ存在しないため、例外がスローされます。
とにかくウィジェットがファイルをチェックし、存在しない場合は、アセットから取得して、アクティビティの代わりにコピーしますか?!?
アプリでデータベースをパッケージ化するために使用SQLiteAssetHelperすることを強くお勧めします。その後、通常どおりgetReadableDatabase()/を使用でき、必要に応じてアセットからデータベースを透過的にアンパックします。getWriteableDatabase()SQLiteAssetHelper
そうは言っても、これを自分でやりたいと確信している場合はgetAssets()、Context渡された の intoonUpdate()を呼び出してくださいAppWidgetProvider。
onUpdate()of はメイン アプリケーション スレッドで呼び出されることに注意してください。そのAppWidgetProviderため、バックグラウンド スレッドでアクティビティ データベース I/O を実行しているように (できれば)、アプリ ウィジェットに対しても同じことを行う必要があります。アプリ ウィジェットの一般的な解決策は、IntentService開始された によって作業が行われるようにすることonUpdate()です。