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端末内の外部ストーリッジ確認 ListsdCardFilesDirPaths = 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 ListgetSdCardFilesDirPathListForLollipop(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 件のコメント:
コメントを投稿