package com.wangdaye.mysplash.common.utils; import android.content.ContentResolver; import android.content.ContentUris; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.os.Environment; import android.provider.MediaStore; import android.support.annotation.NonNull; import android.support.design.widget.Snackbar; import com.wangdaye.mysplash.Mysplash; import com.wangdaye.mysplash.R; import com.wangdaye.mysplash.common.data.entity.table.DownloadMissionEntity; import com.wangdaye.mysplash.common.utils.helper.NotificationHelper; import java.io.File; /** * File utils. * * An utils class that makes operations of file easier. * * */ public class FileUtils { public static boolean createDownloadPath(Context c) { if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { NotificationHelper.showSnackbar( c.getString(R.string.feedback_no_sd_card), Snackbar.LENGTH_SHORT); return false; } File dirFile1 = new File(Environment.getExternalStorageDirectory(), "Pictures"); if (!dirFile1.exists()) { if (!dirFile1.mkdir()) { NotificationHelper.showSnackbar( c.getString(R.string.feedback_create_file_failed) + " -1", Snackbar.LENGTH_SHORT); return false; } } File dirFile2 = new File(Environment.getExternalStorageDirectory().toString() + "/Pictures/Mysplash"); if (!dirFile2.exists()) { if (!dirFile2.mkdir()) { NotificationHelper.showSnackbar( c.getString(R.string.feedback_create_file_failed) + " -2", Snackbar.LENGTH_SHORT); return false; } } return true; } public static boolean isPhotoExists(Context c, String title) { if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { NotificationHelper.showSnackbar( c.getString(R.string.feedback_no_sd_card), Snackbar.LENGTH_SHORT); return false; } File f; f = new File(Environment.getExternalStorageDirectory(), "Pictures"); if (!f.exists()) { return false; } f = new File(Environment.getExternalStorageDirectory().toString() + "/Pictures/Mysplash"); if (!f.exists()) { return false; } f = new File(Environment.getExternalStorageDirectory().toString() + Mysplash.DOWNLOAD_PATH + title + Mysplash.DOWNLOAD_PHOTO_FORMAT); return f.exists(); } public static boolean isCollectionExists(Context c, String title) { if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { NotificationHelper.showSnackbar( c.getString(R.string.feedback_no_sd_card), Snackbar.LENGTH_SHORT); return false; } File f; f = new File(Environment.getExternalStorageDirectory(), "Pictures"); if (!f.exists()) { return false; } f = new File(Environment.getExternalStorageDirectory().toString() + "/Pictures/Mysplash"); if (!f.exists()) { return false; } f = new File(Environment.getExternalStorageDirectory().toString() + Mysplash.DOWNLOAD_PATH + title + Mysplash.DOWNLOAD_COLLECTION_FORMAT); return f.exists(); } public static boolean deleteFile(DownloadMissionEntity entity) { File f = new File(entity.getFilePath()); return f.exists() && f.delete(); } public static String uriToFilePath(Context context, @NonNull Uri uri) { String scheme = uri.getScheme(); String data = null; if (scheme == null) { data = uri.getPath(); } else if (ContentResolver.SCHEME_FILE.equals(scheme)) { data = uri.getPath(); } else if (ContentResolver.SCHEME_CONTENT.equals(scheme)) { Cursor cursor = context.getContentResolver() .query( uri, new String[] {MediaStore.Images.ImageColumns.DATA}, null, null, null ); if (cursor != null) { if (cursor.moveToFirst()) { int index = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); if (index > -1) { data = cursor.getString(index); } } cursor.close(); } } return data; } public static Uri filePathToUri(Context context, @NonNull String filePath) { Uri mediaUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; Cursor cursor = context.getContentResolver().query(mediaUri, null, MediaStore.Images.Media.DISPLAY_NAME + "= ?", new String[] {filePath.substring(filePath.lastIndexOf("/") + 1)}, null); Uri uri = Uri.parse("file://" + filePath); if (cursor != null) { if(cursor.moveToFirst()) { int index = cursor.getColumnIndex(MediaStore.Images.Media._ID); if (index > -1) { uri = ContentUris.withAppendedId(mediaUri, cursor.getLong(index)); } } cursor.close(); } return uri; } }