編集:これはユーザーエラーでした(申し訳ありません)。以下に回答させていただきました。
SD カードのデータにアクセスする必要があるアプリケーションを開発しています。開発デバイス (Android 2.1 を搭載した odroid) で実行すると、ルート アクセス権があり、次を使用してパスを作成できます。
File sdcard = Environment.getExternalStorageDirectory();
String path = sdcard.getAbsolutePath() + File.separator + "mydata"
File data = new File(path);
File[] files = data.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String filename) {
return filename.toLowerCase().endsWith(".xyz");
}});
ただし、ルート アクセス権がない電話 (2.1) にこれをインストールすると、files == null が取得されます。これは、SDカードからデータを読み取るための適切な権限がないためだと思います。/sdcard のファイルを一覧表示しようとすると、files == null も表示されます。したがって、構築されたパスがなくても同じことが当てはまります。
また、このアプリはアプリ ストアを通じて配布されることを意図しておらず、SD カードに個別にコピーされたデータを使用する必要があるため、これは実際の使用例です。res/raw に入れるにはデータが多すぎます (試してみましたが、うまくいきませんでした)。
私も追加しようとしました:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
SDカードを読みたいだけなのに、マニフェストに追加しましたが、役に立ちませんでした。ストレージを読み取るためのアクセス許可の種類が見つかりません。
おそらくこれを行う正しい方法がありますが、私はそれを見つけることができませんでした。どんなヒントも役に立ちます。