android: handle share intent
This commit is contained in:
parent
a5243a1276
commit
409b4125e7
3 changed files with 19 additions and 2 deletions
|
@ -62,6 +62,14 @@
|
|||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<data android:mimeType="image/*" />
|
||||
<data android:mimeType="video/*" />
|
||||
<data android:mimeType="vnd.android.cursor.dir/image" />
|
||||
<data android:mimeType="vnd.android.cursor.dir/video" />
|
||||
</intent-filter>
|
||||
<intent-filter tools:ignore="AppLinkUrlError">
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
|
@ -69,6 +77,7 @@
|
|||
<data android:mimeType="image/*" />
|
||||
<data android:mimeType="video/*" />
|
||||
<data android:mimeType="vnd.android.cursor.dir/image" />
|
||||
<data android:mimeType="vnd.android.cursor.dir/video" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="com.android.camera.action.REVIEW" />
|
||||
|
@ -88,6 +97,7 @@
|
|||
<data android:mimeType="image/*" />
|
||||
<data android:mimeType="video/*" />
|
||||
<data android:mimeType="vnd.android.cursor.dir/image" />
|
||||
<data android:mimeType="vnd.android.cursor.dir/video" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.PICK" />
|
||||
|
@ -96,6 +106,7 @@
|
|||
<data android:mimeType="image/*" />
|
||||
<data android:mimeType="video/*" />
|
||||
<data android:mimeType="vnd.android.cursor.dir/image" />
|
||||
<data android:mimeType="vnd.android.cursor.dir/video" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<!-- file provider to share files having a file:// URI -->
|
||||
|
|
|
@ -4,6 +4,7 @@ import android.content.Intent
|
|||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.os.Parcelable
|
||||
import android.util.Log
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.core.content.pm.ShortcutInfoCompat
|
||||
|
@ -111,8 +112,8 @@ class MainActivity : FlutterActivity() {
|
|||
)
|
||||
}
|
||||
}
|
||||
Intent.ACTION_VIEW, "com.android.camera.action.REVIEW" -> {
|
||||
intent.data?.let { uri ->
|
||||
Intent.ACTION_VIEW, Intent.ACTION_SEND, "com.android.camera.action.REVIEW" -> {
|
||||
(intent.data ?: (intent.getParcelableExtra<Parcelable>(Intent.EXTRA_STREAM) as? Uri))?.let { uri ->
|
||||
return hashMapOf(
|
||||
"action" to "view",
|
||||
"uri" to uri.toString(),
|
||||
|
|
|
@ -19,6 +19,7 @@ internal class ContentImageProvider : ImageProvider() {
|
|||
try {
|
||||
val cursor = context.contentResolver.query(uri, projection, null, null, null)
|
||||
if (cursor != null && cursor.moveToFirst()) {
|
||||
cursor.getColumnIndex(PATH).let { if (it != -1) map["path"] = cursor.getString(it) }
|
||||
cursor.getColumnIndex(MediaStore.MediaColumns.SIZE).let { if (it != -1) map["sizeBytes"] = cursor.getLong(it) }
|
||||
cursor.getColumnIndex(MediaStore.MediaColumns.DISPLAY_NAME).let { if (it != -1) map["title"] = cursor.getString(it) }
|
||||
cursor.close()
|
||||
|
@ -37,7 +38,11 @@ internal class ContentImageProvider : ImageProvider() {
|
|||
}
|
||||
|
||||
companion object {
|
||||
@Suppress("DEPRECATION")
|
||||
const val PATH = MediaStore.MediaColumns.DATA
|
||||
|
||||
private val projection = arrayOf(
|
||||
PATH,
|
||||
MediaStore.MediaColumns.SIZE,
|
||||
MediaStore.MediaColumns.DISPLAY_NAME
|
||||
)
|
||||
|
|
Loading…
Reference in a new issue