外部ストレージを使用しているため、アプリケーションは外部ストレージの状態を認識している必要があります。これは、Environment.getExternalStorageState()
から取得できます。 。
状態がMOUNTED
の場合にのみ、外部ストレージにアクセスする必要があります 。
デバイスの起動中にファイル(またはSQLite DB、これは単なるファイルです!)を開こうとすると、間違いなく 外部ストレージがマウントされていないため、問題が発生します デバイスの起動が始まるまで(ホーム画面が表示された後)
これを回避する方法は、IntentFilter
を登録することです。 外部ストレージの状態のすべての変更が通知され、それに応じて動作します。
ドキュメントを読むことは常に良い考えです!詳細については、Androidのドキュメントを参照してください:http://developer.android.com/reference/android/os/Environment.html
この目的で外部ストレージを使用することは疑わしいです。なぜなら、いつ使用できなくなるかを制御できないからです。たとえば、ユーザーはデバイスをコンピューターのUSBに接続し、[USBマスストレージを有効にする]オプションを選択して、コンピューターからデバイスの外部ストレージにアクセスできるようにします。悪いニュース!アプリは外部ストレージから切断され、ほとんどの場合、クリーンアップIOを実行する機会がありません!
このような状況では、データベースに入力するすべてのデータが利用可能である場合にのみ、それをどのように処理するかが決まります。