2011-08-09 5 views
2

私は今まで、電話機のSDカードにすべてのmp3ファイルを再帰的に追加する単一のアクティビティで構成されているvarsity用のmp3プレーヤーアンドロイドプロジェクトに取り組んでいました。Androidのプログラムがクラッシュし、.android_secure

私のアプリはちょうどクラッシュし続けました。デバッグが大変だったのは、隠しディレクトリ/sdcard/.android_secureを見つけて、このディレクトリのlistFiles()を呼び出そうとするとアプリがクラッシュすることに気付きました。隠されたファイルを処理しないようにすることで問題を回避しました。

ここで私の質問は正確に何が起こっているのですか?私は自分のアプリに.android_secureの内容にアクセスする権限がないと仮定します。 sdcardを通してより堅牢なスキャン方法がありますか?

以下に関連するコードを追加しました。どんな助けもありがとうございます。

File storage = Environment.getExternalStorageDirectory(); 
    addMp3Files(storage); 
} 

private void addMp3Files(File rootDir) { 
    for (File file : rootDir.listFiles()) { 
     if (file.getName().toLowerCase().endsWith(".mp3")) { 
     songs.add(file.getAbsolutePath()); 
     } else if (file.isDirectory() && !file.isHidden()) { 
      addMp3Files(file); 
     } 
    } 
} 
+0

質問に例外ログを追加してください – Jack

+0

問題をよりよく分析できるように、ログを適切に投稿してください。ありがとう。 – artsylar

答えて

3

.android_secureフォルダはAPP2SD機能のために使用されています。 SDカードに移動したアプリのファイルがここに保存されます。許可ビットをチェックすると、それは------であることがわかります。つまり、アプリケーションにはこのフォルダの読み取り権限がありません。それがクラッシュした理由です。
.android_secureのように、アプリケーションが読み取れないファイルとフォルダを除外するには、file.canRead()メソッドで確認できます。

関連する問題