extract relevant extension from file name when processing share intent
This commit is contained in:
		
							parent
							
								
									60588af825
								
							
						
					
					
						commit
						f8b1e8098c
					
				|  | @ -14,6 +14,7 @@ import android.net.Uri; | |||
| import android.os.Build; | ||||
| import android.os.Environment; | ||||
| import android.os.ParcelFileDescriptor; | ||||
| import android.provider.MediaStore; | ||||
| import android.provider.OpenableColumns; | ||||
| import android.system.Os; | ||||
| import android.system.StructStat; | ||||
|  | @ -248,13 +249,33 @@ public class FileBackend { | |||
| 	} | ||||
| 
 | ||||
| 	public void copyFileToPrivateStorage(Message message, Uri uri) throws FileCopyException { | ||||
| 		Log.d(Config.LOGTAG, "copy " + uri.toString() + " to private storage"); | ||||
| 		String mime = mXmppConnectionService.getContentResolver().getType(uri); | ||||
| 		Log.d(Config.LOGTAG, "copy " + uri.toString() + " to private storage (mime="+mime+")"); | ||||
| 		String extension = MimeTypeMap.getSingleton().getExtensionFromMimeType(mime); | ||||
| 		if (extension == null) { | ||||
| 			extension = getExtensionFromUri(uri); | ||||
| 		} | ||||
| 		message.setRelativeFilePath(message.getUuid() + "." + extension); | ||||
| 		copyFileToPrivateStorage(mXmppConnectionService.getFileBackend().getFile(message), uri); | ||||
| 	} | ||||
| 
 | ||||
| 	private String getExtensionFromUri(Uri uri) { | ||||
| 		String[] projection = {MediaStore.MediaColumns.DATA}; | ||||
| 		String filename = null; | ||||
| 		Cursor cursor = mXmppConnectionService.getContentResolver().query(uri, projection, null, null, null); | ||||
| 		if (cursor != null) { | ||||
| 			try { | ||||
| 				if (cursor.moveToFirst()) { | ||||
| 					filename = cursor.getString(0); | ||||
| 				} | ||||
| 			} finally { | ||||
| 				cursor.close(); | ||||
| 			} | ||||
| 		} | ||||
| 		int pos = filename == null ? -1 : filename.lastIndexOf('.'); | ||||
| 		return pos > 0 ? filename.substring(pos+1) : null; | ||||
| 	} | ||||
| 
 | ||||
| 	private void copyImageToPrivateStorage(File file, Uri image, int sampleSize) throws FileCopyException { | ||||
| 		file.getParentFile().mkdirs(); | ||||
| 		InputStream is = null; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Daniel Gultsch
						Daniel Gultsch