mirror of
https://github.com/DrKLO/Telegram.git
synced 2024-12-22 06:25:14 +01:00
Fixed sharing gif files from gallery
This commit is contained in:
parent
ec533c5fff
commit
05471c4395
4 changed files with 52 additions and 42 deletions
|
@ -82,7 +82,7 @@ android {
|
|||
defaultConfig {
|
||||
minSdkVersion 8
|
||||
targetSdkVersion 19
|
||||
versionCode 220
|
||||
versionCode 221
|
||||
versionName "1.4.10"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -684,46 +684,49 @@ public class Utilities {
|
|||
}
|
||||
|
||||
public static String getPath(final Uri uri) {
|
||||
final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
|
||||
if (isKitKat && DocumentsContract.isDocumentUri(ApplicationLoader.applicationContext, uri)) {
|
||||
if (isExternalStorageDocument(uri)) {
|
||||
final String docId = DocumentsContract.getDocumentId(uri);
|
||||
final String[] split = docId.split(":");
|
||||
final String type = split[0];
|
||||
if ("primary".equalsIgnoreCase(type)) {
|
||||
return Environment.getExternalStorageDirectory() + "/" + split[1];
|
||||
try {
|
||||
final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
|
||||
if (isKitKat && DocumentsContract.isDocumentUri(ApplicationLoader.applicationContext, uri)) {
|
||||
if (isExternalStorageDocument(uri)) {
|
||||
final String docId = DocumentsContract.getDocumentId(uri);
|
||||
final String[] split = docId.split(":");
|
||||
final String type = split[0];
|
||||
if ("primary".equalsIgnoreCase(type)) {
|
||||
return Environment.getExternalStorageDirectory() + "/" + split[1];
|
||||
}
|
||||
} else if (isDownloadsDocument(uri)) {
|
||||
final String id = DocumentsContract.getDocumentId(uri);
|
||||
final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
|
||||
return getDataColumn(ApplicationLoader.applicationContext, contentUri, null, null);
|
||||
} else if (isMediaDocument(uri)) {
|
||||
final String docId = DocumentsContract.getDocumentId(uri);
|
||||
final String[] split = docId.split(":");
|
||||
final String type = split[0];
|
||||
|
||||
Uri contentUri = null;
|
||||
if ("image".equals(type)) {
|
||||
contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
|
||||
} else if ("video".equals(type)) {
|
||||
contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
|
||||
} else if ("audio".equals(type)) {
|
||||
contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
|
||||
}
|
||||
|
||||
final String selection = "_id=?";
|
||||
final String[] selectionArgs = new String[] {
|
||||
split[1]
|
||||
};
|
||||
|
||||
return getDataColumn(ApplicationLoader.applicationContext, contentUri, selection, selectionArgs);
|
||||
}
|
||||
} else if (isDownloadsDocument(uri)) {
|
||||
final String id = DocumentsContract.getDocumentId(uri);
|
||||
final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
|
||||
return getDataColumn(ApplicationLoader.applicationContext, contentUri, null, null);
|
||||
} else if (isMediaDocument(uri)) {
|
||||
final String docId = DocumentsContract.getDocumentId(uri);
|
||||
final String[] split = docId.split(":");
|
||||
final String type = split[0];
|
||||
|
||||
Uri contentUri = null;
|
||||
if ("image".equals(type)) {
|
||||
contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
|
||||
} else if ("video".equals(type)) {
|
||||
contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
|
||||
} else if ("audio".equals(type)) {
|
||||
contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
|
||||
}
|
||||
|
||||
final String selection = "_id=?";
|
||||
final String[] selectionArgs = new String[] {
|
||||
split[1]
|
||||
};
|
||||
|
||||
return getDataColumn(ApplicationLoader.applicationContext, contentUri, selection, selectionArgs);
|
||||
} else if ("content".equalsIgnoreCase(uri.getScheme())) {
|
||||
return getDataColumn(ApplicationLoader.applicationContext, uri, null, null);
|
||||
} else if ("file".equalsIgnoreCase(uri.getScheme())) {
|
||||
return uri.getPath();
|
||||
}
|
||||
} else if ("content".equalsIgnoreCase(uri.getScheme())) {
|
||||
return getDataColumn(ApplicationLoader.applicationContext, uri, null, null);
|
||||
} else if ("file".equalsIgnoreCase(uri.getScheme())) {
|
||||
return uri.getPath();
|
||||
} catch (Exception e) {
|
||||
FileLog.e("tmessages", e);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
@ -1535,10 +1535,15 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
|
|||
processSendingPhoto(currentPicturePath, null);
|
||||
currentPicturePath = null;
|
||||
} else if (requestCode == 1) {
|
||||
if (data == null) {
|
||||
if (data == null || data.getData() == null) {
|
||||
return;
|
||||
}
|
||||
processSendingPhoto(null, data.getData());
|
||||
String tempPath = Utilities.getPath(data.getData());
|
||||
if (tempPath != null && tempPath.endsWith(".gif")) {
|
||||
processSendingDocument(tempPath);
|
||||
} else {
|
||||
processSendingPhoto(null, data.getData());
|
||||
}
|
||||
} else if (requestCode == 2) {
|
||||
String videoPath = null;
|
||||
if (data != null) {
|
||||
|
|
|
@ -329,7 +329,8 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen
|
|||
parcelable = Uri.parse(parcelable.toString());
|
||||
}
|
||||
if (parcelable != null && type != null && type.startsWith("image/")) {
|
||||
if (type.equals("image/gif")) {
|
||||
String tempPath = Utilities.getPath((Uri)parcelable);
|
||||
if (type.equals("image/gif") || tempPath != null && tempPath.endsWith(".gif")) {
|
||||
try {
|
||||
documentPath = Utilities.getPath((Uri)parcelable);
|
||||
} catch (Exception e) {
|
||||
|
@ -371,7 +372,8 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen
|
|||
if (!(parcelable instanceof Uri)) {
|
||||
parcelable = Uri.parse(parcelable.toString());
|
||||
}
|
||||
if (type.equals("image/gif")) {
|
||||
String tempPath = Utilities.getPath((Uri)parcelable);
|
||||
if (type.equals("image/gif") || tempPath != null && tempPath.endsWith(".gif")) {
|
||||
if (documentsPathArray == null) {
|
||||
documentsPathArray = new ArrayList<String>();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue