忍者ブログ

とある社内SEの備忘録 !!

主にRPA、Androidアプリ開発について投稿しています。メモ書きです。

端末にあるSDカードのパスを取得する方法

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

端末にあるSDカードのパスを取得する方法



public static String[] getExternalStorageDirectories(Context context) {
List<String> results = new ArrayList<>();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
File[] externalDirs = context.getExternalFilesDirs(null);
for (File file : externalDirs) {
String path = file.getPath().split("/Android")[0];
boolean addPath = false;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
addPath = Environment.isExternalStorageRemovable(file);
}
else{
addPath = Environment.MEDIA_MOUNTED.equals(EnvironmentCompat.getStorageState(file));
}
if(addPath){
results.add(path);
}
}
}
if(results.isEmpty()) {
String output = "";
try {
final Process process = new ProcessBuilder().command("mount | grep /dev/block/vold")
.redirectErrorStream(true).start();
process.waitFor();
final InputStream is = process.getInputStream();
final byte[] buffer = new byte[1024];
while (is.read(buffer) != -1) {
output = output + new String(buffer);
}
is.close();
} catch (final Exception e) {
e.printStackTrace();
}
if(!output.trim().isEmpty()) {
String devicePoints[] = output.split("\n");
for(String voldPoint: devicePoints) {
results.add(voldPoint.split(" ")[2]);
}
}
}
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
for (int i = 0; i < results.size(); i++) {
if (!results.get(i).toLowerCase().matches(".*[0-9a-f]{4}[-][0-9a-f]{4}")) {
results.remove(i--);
}
}
} else {
for (int i = 0; i < results.size(); i++) {
if (!results.get(i).toLowerCase().contains("ext") && !results.get(i).toLowerCase().contains("sdcard")) {
results.remove(i--);
}
}
}
String[] storageDirectories = new String[results.size()];
for(int i=0; i<results.size(); ++i) storageDirectories[i] = results.get(i);
return storageDirectories;
}
https://akira-watson.com/android/sdcard_path.html

https://stackoverflow.com/questions/36766016/how-to-get-sd-card-path-in-android6-0-programmatically/40205116#40205116
PR

コメント

プロフィール

HN:
Satoshin
性別:
男性
職業:
開拓エンジニア
趣味:
ダーツ、麻雀、カラオケ、ジョギング
自己紹介:
横浜在住の30代♂

某企業の情報システム部門に所属。
⇒転職活動中

業務効率化を推進しつつ自社用Androidアプリを開発している。
言語:Java、VB.NET、VBA、ASP.NET、C#
興味:Kotlin、Python、AWS、UiPath

横浜圏の友人皆無・・(´;ω;`)
RPA、ダーツ、麻雀、飲み仲間募集中w

麻雀格闘倶楽部はココに出没中

AbemaTVでM.LEAGUE鑑賞中!!

P R