| Chunk |
|---|
| Conflicting content |
|---|
return false;
}
<<<<<<< HEAD
public static String classToString(Object object) {
if (object == null) {
return "null";
} else {
return String.format("%s(%s)", object.getClass().getSimpleName(), object);
}
}
=======
public static String getImagePath(Context context, Uri contentUri){
if (!hasPermission(context, "android.permission.READ_EXTERNAL_STORAGE")) {
return null;
}
Cursor cursor = context.getContentResolver().query(contentUri, null, null, null, null);
cursor.moveToFirst();
String document_id = cursor.getString(0);
document_id = document_id.substring(document_id.lastIndexOf(":")+1);
cursor.close();
cursor = context.getContentResolver().query(
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null);
cursor.moveToFirst();
String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
cursor.close();
return path;
}
public static long getImageCreationTime(Context context, Uri contentUri){
Cursor cursor = context.getContentResolver().query(contentUri, null, null, null, null);
cursor.moveToFirst();
String document_id = cursor.getString(0);
document_id = document_id.substring(document_id.lastIndexOf(":")+1);
cursor.close();
cursor = context.getContentResolver().query(
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null);
cursor.moveToFirst();
long time = cursor.getLong(cursor.getColumnIndex(MediaStore.Images.Media.DATE_ADDED));
cursor.close();
return time;
}
/*
* Generate cached file name use {@linkplain String#hashCode() hashcode} from image originalPath and image created time
*/
public static String generateCacheFileFullPath(Context context, String imageUri, long createdTime) {
String source = imageUri + Long.toString(createdTime);
String fileName = String.valueOf(source.hashCode());
File cacheDir = getDiskCacheDir(context);
File cacheFile = new File(cacheDir, fileName);
return cacheFile.getPath();
}
/*
* Generate cached file name use {@linkplain String#hashCode() hashcode} from image originalPath and image created time
*/
public static String generateCacheFileFullPathMd5(Context context, String imageUri) {
String fileName = calculateMD5(context, Uri.parse(imageUri));
if (fileName == null) {
return null;
}
File cacheDir = getDiskCacheDir(context);
File cacheFile = new File(cacheDir, fileName);
return cacheFile.getPath();
}
public static File getDiskCacheDir(Context context) {
File appCacheDir = null;
if ((Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
|| !Environment.isExternalStorageRemovable())
&& hasPermission(context, "android.permission.WRITE_EXTERNAL_STORAGE")) {
appCacheDir = context.getExternalCacheDir();
}
if (appCacheDir == null){
appCacheDir = context.getCacheDir();
}
return appCacheDir;
}
public static boolean hasPermission(Context context, final String permission) {
int perm = context.checkCallingOrSelfPermission(permission);
return perm == PackageManager.PERMISSION_GRANTED;
}
//Calculate MD5 from file's content
private static String calculateMD5(Context context, Uri uri) {
MessageDigest digest;
try {
digest = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
Log.e("Exception while getting digest", e);
return null;
}
InputStream is;
try {
is = new BufferedInputStream(context.getContentResolver().openInputStream(uri));
} catch (FileNotFoundException e) {
Log.e("Exception while getting FileInputStream", e);
return null;
}
byte[] buffer = new byte[8192];
int read;
try {
while ((read = is.read(buffer)) > 0) {
digest.update(buffer, 0, read);
}
byte[] md5sum = digest.digest();
BigInteger bigInt = new BigInteger(1, md5sum);
String output = bigInt.toString(16);
// Fill to 32 chars
output = String.format("%32s", output).replace(' ', '0');
return output;
} catch (IOException e) {
throw new RuntimeException("Unable to process file for MD5", e);
} finally {
try {
is.close();
} catch (IOException e) {
Log.e("Exception on closing MD5 input stream", e);
}
}
}
>>>>>>> 25b16cdffc9c1a363c8f30128149c050d28c51f2
}
|
| Solution content |
|---|
return false;
}
public static String classToString(Object object) {
if (object == null) {
return "null";
} else {
return String.format("%s(%s)", object.getClass().getSimpleName(), object);
}
}
public static String getImagePath(Context context, Uri contentUri){
if (!hasPermission(context, "android.permission.READ_EXTERNAL_STORAGE")) {
return null;
}
Cursor cursor = context.getContentResolver().query(contentUri, null, null, null, null);
cursor.moveToFirst();
String document_id = cursor.getString(0);
document_id = document_id.substring(document_id.lastIndexOf(":")+1);
cursor.close();
cursor = context.getContentResolver().query(
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null);
cursor.moveToFirst();
String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
cursor.close();
return path;
}
public static long getImageCreationTime(Context context, Uri contentUri){
Cursor cursor = context.getContentResolver().query(contentUri, null, null, null, null);
cursor.moveToFirst();
String document_id = cursor.getString(0);
document_id = document_id.substring(document_id.lastIndexOf(":")+1);
cursor.close();
cursor = context.getContentResolver().query(
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null);
cursor.moveToFirst();
long time = cursor.getLong(cursor.getColumnIndex(MediaStore.Images.Media.DATE_ADDED));
cursor.close();
return time;
}
/*
* Generate cached file name use {@linkplain String#hashCode() hashcode} from image originalPath and image created time
*/
public static String generateCacheFileFullPath(Context context, String imageUri, long createdTime) {
String source = imageUri + Long.toString(createdTime);
String fileName = String.valueOf(source.hashCode());
File cacheDir = getDiskCacheDir(context);
File cacheFile = new File(cacheDir, fileName);
return cacheFile.getPath();
}
/*
* Generate cached file name use {@linkplain String#hashCode() hashcode} from image originalPath and image created time
*/
public static String generateCacheFileFullPathMd5(Context context, String imageUri) {
String fileName = calculateMD5(context, Uri.parse(imageUri));
if (fileName == null) {
return null;
}
File cacheDir = getDiskCacheDir(context);
File cacheFile = new File(cacheDir, fileName);
return cacheFile.getPath();
}
public static File getDiskCacheDir(Context context) {
File appCacheDir = null;
if ((Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
|| !Environment.isExternalStorageRemovable())
&& hasPermission(context, "android.permission.WRITE_EXTERNAL_STORAGE")) {
appCacheDir = context.getExternalCacheDir();
}
if (appCacheDir == null){
appCacheDir = context.getCacheDir();
}
return appCacheDir;
}
public static boolean hasPermission(Context context, final String permission) {
int perm = context.checkCallingOrSelfPermission(permission);
return perm == PackageManager.PERMISSION_GRANTED;
}
//Calculate MD5 from file's content
private static String calculateMD5(Context context, Uri uri) {
MessageDigest digest;
try {
digest = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
Log.e("Exception while getting digest", e);
return null;
}
InputStream is;
try {
is = new BufferedInputStream(context.getContentResolver().openInputStream(uri));
} catch (FileNotFoundException e) {
Log.e("Exception while getting FileInputStream", e);
return null;
}
byte[] buffer = new byte[8192];
int read;
try {
while ((read = is.read(buffer)) > 0) {
digest.update(buffer, 0, read);
}
byte[] md5sum = digest.digest();
BigInteger bigInt = new BigInteger(1, md5sum);
String output = bigInt.toString(16);
// Fill to 32 chars
output = String.format("%32s", output).replace(' ', '0');
return output;
} catch (IOException e) {
throw new RuntimeException("Unable to process file for MD5", e);
} finally {
try {
is.close();
} catch (IOException e) {
Log.e("Exception on closing MD5 input stream", e);
}
}
}
}
|
| File |
|---|
| Util.java |
| Developer's decision |
|---|
| Concatenation |
| Kind of conflict |
|---|
| Comment |
| Method declaration |