1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package eu.kanade.tachiyomi.util.system
- import android.content.ClipData
- import android.content.Context
- import android.content.Intent
- import android.net.Uri
- import android.os.Build
- import android.os.Bundle
- import eu.kanade.tachiyomi.R
- import java.io.Serializable
- fun Uri.toShareIntent(context: Context, type: String = "image/*", message: String? = null): Intent {
- val uri = this
- val shareIntent = Intent(Intent.ACTION_SEND).apply {
- if (message != null) putExtra(Intent.EXTRA_TEXT, message)
- putExtra(Intent.EXTRA_STREAM, uri)
- clipData = ClipData.newRawUri(null, uri)
- setType(type)
- flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
- }
- return Intent.createChooser(shareIntent, context.getString(R.string.action_share)).apply {
- flags = Intent.FLAG_ACTIVITY_NEW_TASK
- }
- }
- inline fun <reified T> Intent.getParcelableExtraCompat(name: String): T? {
- return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
- getParcelableExtra(name, T::class.java)
- } else {
- @Suppress("DEPRECATION")
- getParcelableExtra(name)
- }
- }
- inline fun <reified T : Serializable> Intent.getSerializableExtraCompat(name: String): T? {
- return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
- getSerializableExtra(name, T::class.java)
- } else {
- @Suppress("DEPRECATION")
- getSerializableExtra(name) as? T
- }
- }
- inline fun <reified T : Serializable> Bundle.getSerializableCompat(name: String): T? {
- return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
- getSerializable(name, T::class.java)
- } else {
- @Suppress("DEPRECATION")
- getSerializable(name) as? T
- }
- }
- inline fun <reified T> Bundle.getParcelableCompat(name: String): T? {
- return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
- getParcelable(name, T::class.java)
- } else {
- @Suppress("DEPRECATION")
- getParcelable(name)
- }
- }
|