2017-10-30 21 views
0

すべてのデバイスを実行し、sdcardのベースパスを返す方法を見つけることができません。私はフィルタ "ストレージ"を持つすべてのファイルを取得し、それが外部ファイルかどうかを確認する次の方法を見つけた。いくつかのデバイスで正常に動作しています。sdcardからファイルを読み取る標準的な方法

File root = new File("/storage/"); 
    File dirs[] = root.listFiles(); 

    for (File dir : dirs) { 
     if (Environment.isExternalStorageRemovable(dir.getAbsoluteFile())) { 
      return dir.getPath(); 
     } 
    } 

は今、私はこのカードを読んでことはできませんよ上記のコードを、そのSDカードのパス「ROOR /リムーバブル/ microSDはある私の手でデバイスを得た。私は多くのリンクが、通過した標準的な方法を見つけることができません。私はまた、次の試してみましたが、これは実際のアドレスを返しません

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath(); 
+0

Android 4.4のように、ファイルシステムからリムーバブルメディアへの任意の読み取りアクセス権はありません。 – CommonsWare

答えて

1

私はあなたがアクセス取り外し可能なSDカードを望むとしているSDカードのパスを取得するための標準的な方法は次のとおりです。。。Context.getExternalFilesDirs()通常はSDカードのパスSDCardがマウントされているかどうかを確認してください。

String path = null; 
File[] dirs = getContext().getExternalFilesDirs(null); 
if (dirs!=null && Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { 
    path = dirs[dirs.length-1].getAbsolutePath(); 
    path = path.substring(0, path.indexOf("Android")); 
} 
return path; 
+0

urはお返事ありがとうございますが、文字列を引数として取るgetExternalFilesDir()です。私はこの呼び出しで文字列として何を送るべきですか? –

+0

nullを設定できます。回答が更新されました – alrama

+0

ナンセンス回答。 getExternalFilesDir()はリムーバブルSDカードからのパスを返しません。 OPがそれを受け入れるのは非常に奇妙です。あなたはgetExternalFilesDirs()を意味しますか? – greenapps

関連する問題