0

BroadcastReceiverを介して自動起動し、Android 2.3.3のホームスクリーンとして設定されているアプリがあります。HTC Desire HD の API10。

アプリは起動直後にビデオを繰り返し再生する必要がありますが、SD カードの準備ができていないため、強制終了エラー メッセージが表示されてアプリケーションが強制終了されます。

少なくともSDカードが原因だと思います。

バックグラウンドでホーム画面が再起動するのにエラーメッセージが消えず、数秒後に消えても問題ないのですが、全く表示されなければなおさらです..

手伝って頂けますか?ありがとう!

編集#1:これは、SDカードの準備ができているかどうかを確認します。読み取りアクセスのみが必要です..

static public boolean hasStorage(boolean requireWriteAccess) {

    String state = Environment.getExternalStorageState();
    Log.v("tomi", "storage state is " + state);

    if (Environment.MEDIA_MOUNTED.equals(state)) {
        if (requireWriteAccess) {
            boolean writable = checkFsWritable();
            Log.v("tomi", "storage writable is " + writable);
            return writable;
        } else {
            return true;
        }
    } else if (!requireWriteAccess && Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
        return true;
    }
    return false;
}
4

1 に答える 1

2

これに対する解決策はありますか?

まず、 「BroadcastReceiver による自動起動」と「ホーム画面として設定」の両方が必要ないはずです。後者で十分です。

アクティビティが開始されると、Environment外部ストレージの準備ができているかどうかを確認できます。そうでない場合は、受信者を登録しACTION_MEDIA_MOUNTEDて、外部ストレージの準備ができたときにそれを確認できます。準備ができたら、その時点でのみ、ビデオの再生を試みることができます。

于 2012-02-15T19:48:15.810 に答える