IntentExtensions.kt 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package eu.kanade.tachiyomi.util.system
  2. import android.content.ClipData
  3. import android.content.Context
  4. import android.content.Intent
  5. import android.net.Uri
  6. import android.os.Build
  7. import android.os.Bundle
  8. import eu.kanade.tachiyomi.R
  9. import java.io.Serializable
  10. fun Uri.toShareIntent(context: Context, type: String = "image/*", message: String? = null): Intent {
  11. val uri = this
  12. val shareIntent = Intent(Intent.ACTION_SEND).apply {
  13. if (message != null) putExtra(Intent.EXTRA_TEXT, message)
  14. putExtra(Intent.EXTRA_STREAM, uri)
  15. clipData = ClipData.newRawUri(null, uri)
  16. setType(type)
  17. flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
  18. }
  19. return Intent.createChooser(shareIntent, context.getString(R.string.action_share)).apply {
  20. flags = Intent.FLAG_ACTIVITY_NEW_TASK
  21. }
  22. }
  23. inline fun <reified T> Intent.getParcelableExtraCompat(name: String): T? {
  24. return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
  25. getParcelableExtra(name, T::class.java)
  26. } else {
  27. @Suppress("DEPRECATION")
  28. getParcelableExtra(name)
  29. }
  30. }
  31. inline fun <reified T : Serializable> Intent.getSerializableExtraCompat(name: String): T? {
  32. return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
  33. getSerializableExtra(name, T::class.java)
  34. } else {
  35. @Suppress("DEPRECATION")
  36. getSerializableExtra(name) as? T
  37. }
  38. }
  39. inline fun <reified T : Serializable> Bundle.getSerializableCompat(name: String): T? {
  40. return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
  41. getSerializable(name, T::class.java)
  42. } else {
  43. @Suppress("DEPRECATION")
  44. getSerializable(name) as? T
  45. }
  46. }
  47. inline fun <reified T> Bundle.getParcelableCompat(name: String): T? {
  48. return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
  49. getParcelable(name, T::class.java)
  50. } else {
  51. @Suppress("DEPRECATION")
  52. getParcelable(name)
  53. }
  54. }