handle Crop intent for setting contact photo etc

This commit is contained in:
tibbi 2017-05-31 20:36:20 +02:00
parent d39926a3c2
commit 7358bb7cce
2 changed files with 33 additions and 3 deletions

View file

@ -145,6 +145,18 @@
<data android:mimeType="image/*"/> <data android:mimeType="image/*"/>
</intent-filter> </intent-filter>
<intent-filter>
<action android:name="com.android.camera.action.CROP"/>
<data android:scheme="content"/>
<data android:scheme="file"/>
<data android:mimeType="image/*"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.ALTERNATIVE"/>
<category android:name="android.intent.category.SELECTED_ALTERNATIVE"/>
</intent-filter>
</activity> </activity>
<activity <activity

View file

@ -2,9 +2,11 @@ package com.simplemobiletools.gallery.activities
import android.app.Activity import android.app.Activity
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.Bitmap.CompressFormat
import android.graphics.Point import android.graphics.Point
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.provider.MediaStore
import android.util.Log import android.util.Log
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
@ -18,8 +20,8 @@ import com.simplemobiletools.gallery.dialogs.SaveAsDialog
import com.simplemobiletools.gallery.extensions.getRealPathFromURI import com.simplemobiletools.gallery.extensions.getRealPathFromURI
import com.theartofdev.edmodo.cropper.CropImageView import com.theartofdev.edmodo.cropper.CropImageView
import kotlinx.android.synthetic.main.view_crop_image.* import kotlinx.android.synthetic.main.view_crop_image.*
import java.io.File import java.io.*
import java.io.OutputStream
class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener { class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener {
val TAG = EditActivity::class.java.simpleName val TAG = EditActivity::class.java.simpleName
@ -113,7 +115,23 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
override fun onCropImageComplete(view: CropImageView, result: CropImageView.CropResult) { override fun onCropImageComplete(view: CropImageView, result: CropImageView.CropResult) {
if (result.error == null) { if (result.error == null) {
if (uri.scheme == "file") { if (isCropIntent && intent.extras?.containsKey(MediaStore.EXTRA_OUTPUT) == true) {
val targetUri = intent.extras!!.get(MediaStore.EXTRA_OUTPUT) as Uri
var inputStream: InputStream? = null
var outputStream: OutputStream? = null
try {
val stream = ByteArrayOutputStream()
result.bitmap.compress(CompressFormat.JPEG, 100, stream)
inputStream = ByteArrayInputStream(stream.toByteArray())
outputStream = contentResolver.openOutputStream(targetUri)
inputStream.copyTo(outputStream)
} finally {
inputStream?.close()
outputStream?.close()
}
setResult(RESULT_OK)
finish()
} else if (uri.scheme == "file") {
SaveAsDialog(this, uri.path) { SaveAsDialog(this, uri.path) {
saveBitmapToFile(result.bitmap, it) saveBitmapToFile(result.bitmap, it)
} }