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 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 件のコメント:
コメントを投稿