2019 May 06.
https://qiita.com/h_yama37/items/11b8658b2de9625200aa より
SdCardDirPaths.java
CompStringLength.java
https://qiita.com/h_yama37/items/11b8658b2de9625200aa より
- private final Context AppContext;
- private final String file;
- // android端末内の外部ストーリッジ確認
- List
sdCardFilesDirPaths = SdCardDirPaths.getSdCardFilesDirPathListForLollipop( AppContext ); Collections.sort(sdCardFilesDirPaths, new CompStringLength()); for (String p : sdCardFilesDirPaths) { Log.d("My", "SDパスの1つ: " + p); } externalPath = sdCardFilesDirPaths.get(0); externalPath = externalPath.replaceAll("/Android.*$", ""); Log.d("My", "SDパス: " + externalPath); // get filePath final String sourcePath = externalPath + "/" + file; Log.d("My", "sourcePath " + sourcePath ); if ( new File(sourcePath).exists()) { Log.d("My", sourcePath + " exists."); } else { Log.d("My", sourcePath + " not exist."); }
SdCardDirPaths.java
- import android.annotation.TargetApi;
- import android.content.Context;
- import android.os.Build;
- import android.os.Environment;
- import android.util.Log;
- import java.io.File;
- import java.util.ArrayList;
- import java.util.List;
- public class SdCardDirPaths {
- /**
- * SDカードのfilesディレクトリパスのリストを取得する。
- * Android5.0以上対応。
- *
- * @param context
- * @return SDカードのfilesディレクトリパスのリスト
- */
- @TargetApi(Build.VERSION_CODES.LOLLIPOP)
- public static List
getSdCardFilesDirPathListForLollipop(Context context) { List sdCardFilesDirPathList = new ArrayList<>(); // getExternalFilesDirsはAndroid4.4から利用できるAPI。 // filesディレクトリのリストを取得できる。 File[] dirArr = context.getExternalFilesDirs(null); for (File dir : dirArr) { if (dir != null) { String path = dir.getAbsolutePath(); Log.d("My", "Externalパスの1つ: " + path); // isExternalStorageRemovableはAndroid5.0から利用できるAPI。 // 取り外し可能かどうか(SDカードかどうか)を判定している。 if (Environment.isExternalStorageRemovable(dir)) { // 取り外し可能であればSDカード。 if (!sdCardFilesDirPathList.contains(path)) { sdCardFilesDirPathList.add(path); } } else { // 取り外し不可能であれば内部ストレージ。 } } } return sdCardFilesDirPathList; } }
CompStringLength.java
- import java.util.Comparator;
- public class CompStringLength implements Comparator
{ @Override public int compare(String first, String second){ //null評価 //両方nullなら等価とする if(first == null && second == null){ return 0; } //片方nullなら、nullを小さいとする。 if(first == null){ return -1; }else if(second == null){ return 1; } //idの文字列長でソート。文字列数がが小さい順に並べる。 if(first.length() > second.length()){ return 1; }else if(first.length() < second.length()){ return -1; }else if(first.length() == second.length()){ return 0; } return 0; } }
0 件のコメント:
コメントを投稿