Skip to content

Commit 294b9df

Browse files
committed
fix #66, handle some imageshare intents
1 parent 9e8a408 commit 294b9df

3 files changed

Lines changed: 52 additions & 12 deletions

File tree

app/src/main/AndroidManifest.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@
3333

3434
<data android:mimeType="image/*"/>
3535
</intent-filter>
36+
37+
38+
<intent-filter>
39+
<action android:name="android.intent.action.SEND"/>
40+
<category android:name="android.intent.category.DEFAULT"/>
41+
<data android:mimeType="image/*"/>
42+
</intent-filter>
3643
</activity>
3744

3845
<activity

app/src/main/kotlin/com/simplemobiletools/draw/MyCanvas.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ class MyCanvas(context: Context, attrs: AttributeSet) : View(context, attrs) {
104104
return bitmap
105105
}
106106

107-
fun drawBitmap(activity: Activity, path: String) {
107+
fun drawBitmap(activity: Activity, path: Any) {
108108
Thread({
109109
val size = Point()
110110
activity.windowManager.defaultDisplay.getSize(size)

app/src/main/kotlin/com/simplemobiletools/draw/activities/MainActivity.kt

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import android.os.Bundle
99
import android.support.v4.content.FileProvider
1010
import android.view.Menu
1111
import android.view.MenuItem
12+
import android.webkit.MimeTypeMap
1213
import android.widget.SeekBar
1314
import com.simplemobiletools.commons.dialogs.ColorPickerDialog
1415
import com.simplemobiletools.commons.dialogs.FilePickerDialog
@@ -30,6 +31,7 @@ import java.io.ByteArrayOutputStream
3031
import java.io.File
3132
import java.io.FileOutputStream
3233

34+
3335
class MainActivity : SimpleActivity(), MyCanvas.PathsChangedListener {
3436
private val FOLDER_NAME = "images"
3537
private val FILE_NAME = "simple-draw.png"
@@ -43,6 +45,7 @@ class MainActivity : SimpleActivity(), MyCanvas.PathsChangedListener {
4345
override fun onCreate(savedInstanceState: Bundle?) {
4446
super.onCreate(savedInstanceState)
4547
setContentView(R.layout.activity_main)
48+
storeStoragePaths()
4649
my_canvas.setListener(this)
4750
stroke_width_bar.setOnSeekBarChangeListener(onStrokeWidthBarChangeListener)
4851

@@ -56,18 +59,8 @@ class MainActivity : SimpleActivity(), MyCanvas.PathsChangedListener {
5659
color_picker.setOnClickListener { pickColor() }
5760
undo.setOnClickListener { my_canvas.undo() }
5861
eraser.setOnClickListener { eraserClicked() }
59-
storeStoragePaths()
6062

61-
if (intent?.action == Intent.ACTION_VIEW && intent.data != null) {
62-
val path = intent.data!!.path
63-
handlePermission(PERMISSION_WRITE_STORAGE) {
64-
if (it) {
65-
openPath(path)
66-
} else {
67-
toast(R.string.no_storage_permissions)
68-
}
69-
}
70-
}
63+
checkIntents()
7164
checkWhatsNewDialog()
7265
}
7366

@@ -128,6 +121,34 @@ class MainActivity : SimpleActivity(), MyCanvas.PathsChangedListener {
128121
}
129122
}
130123

124+
private fun checkIntents() {
125+
if (intent?.action == Intent.ACTION_SEND && intent.type.startsWith("image/")) {
126+
handlePermission(PERMISSION_WRITE_STORAGE) {
127+
if (it) {
128+
val uri = intent.getParcelableExtra<Uri>(Intent.EXTRA_STREAM)
129+
if (uri.scheme == "file") {
130+
openPath(uri.path)
131+
} else if (uri.scheme == "content") {
132+
openUri(uri)
133+
}
134+
} else {
135+
toast(R.string.no_storage_permissions)
136+
}
137+
}
138+
}
139+
140+
if (intent?.action == Intent.ACTION_VIEW && intent.data != null) {
141+
val path = intent.data!!.path
142+
handlePermission(PERMISSION_WRITE_STORAGE) {
143+
if (it) {
144+
openPath(path)
145+
} else {
146+
toast(R.string.no_storage_permissions)
147+
}
148+
}
149+
}
150+
}
151+
131152
private fun openPath(path: String) {
132153
when {
133154
path.endsWith(".svg") -> {
@@ -143,6 +164,18 @@ class MainActivity : SimpleActivity(), MyCanvas.PathsChangedListener {
143164
}
144165
}
145166

167+
private fun openUri(uri: Uri) {
168+
val mime = MimeTypeMap.getSingleton()
169+
val type = mime.getExtensionFromMimeType(contentResolver.getType(uri))
170+
when (type) {
171+
"jpg", "jpeg", "png" -> {
172+
my_canvas.drawBitmap(this, uri)
173+
suggestedFileExtension = JPG
174+
}
175+
else -> toast(R.string.invalid_file_format)
176+
}
177+
}
178+
146179
private fun eraserClicked() {
147180
isEraserOn = !isEraserOn
148181
updateEraserState()

0 commit comments

Comments
 (0)