2012-02-15 8 views
0

私はBroadcastReceiver経由で自動起動するアプリを持っており、Android 2.3.3ではホーム画面に設定されています。 HTC Desire HD上のAPI10起動後にsdcardからビデオを再生

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

少なくとも私はそれがsdcardのためだと思います。

バックグラウンドでは、ホーム画面が再開しますが、エラーメッセージは消えませんが、数秒後に消えてしまえば問題ありませんが、まったく表示されない場合はさらに大きくなります。 。

私を助けることができますか?感謝! ありがとう!

編集#1: これは、sdcardが準備完了であるかどうかをチェックします。私は

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; 
} 

答えて

2

あなたは、このためのソリューションを持っています。..読み取りアクセス必要がありますか?

まず、あなたは「ホームスクリーンに設定」を「BroadcastReceiverを経由して自動スタート」との両方を必要はありません。十分なはずであり、好ましくは後者である。

アクティビティが起動すると、Environmentに外部ストレージが準備されているかどうかを確認できます。そうでない場合は、ACTION_MEDIA_MOUNTEDの受信機を登録して、外部ストレージがいつ準備完了になるかを知ることができます。準備が整ったら(その時点でのみ)、ビデオを再生しようとすることができます。

+0

こんにちは、私は、ユーザーがデバイスへのアクセス権がなく、それを操作できないように、自動起動とホームスクリーンの交換が必要です。 (そのキオスクアプリ)。私は最初の投稿で更新するコードを介してsdcardを待つことを試みた。 – antion

+0

@antion:キオスクアプリはセーフモードで再起動した場合でも誰でもあなたのアプリを削除できることを覚えていますが、キオスクアプリは代わりのホーム画面として正常に機能するはずです。 – CommonsWare

+0

ああいいえ、あなたは何を示唆しているのですか?どうか私の問題を解決するかもしれないと思うかもしれません;) – antion

関連する問題