11package moe.feng.kotlinyan.common
22
3- interface AndroidExtensions : ActivityExtensions , ViewExtensions , ResourcesExtensions , FragmentExtensions
3+ import android.annotation.SuppressLint
4+ import android.content.Intent
5+ import android.os.Build
6+ import android.os.Bundle
7+ import android.os.IBinder
8+ import android.os.Parcelable
9+ import android.util.Size
10+ import android.util.SizeF
11+ import java.io.Serializable
12+
13+ interface AndroidExtensions : ActivityExtensions , ViewExtensions , ResourcesExtensions , FragmentExtensions {
14+
15+ operator fun Intent.set (key : String , value : Any ) {
16+ when (value) {
17+ is Int -> putExtra(key, value)
18+ is String -> putExtra(key, value)
19+ is Short -> putExtra(key, value)
20+ is Long -> putExtra(key, value)
21+ is Byte -> putExtra(key, value)
22+ is Char -> putExtra(key, value)
23+ is CharSequence -> putExtra(key, value)
24+ is Boolean -> putExtra(key, value)
25+ is Float -> putExtra(key, value)
26+ is Double -> putExtra(key, value)
27+ is Bundle -> putExtra(key, value)
28+ is Parcelable -> putExtra(key, value)
29+ is IntArray -> putExtra(key, value)
30+ is FloatArray -> putExtra(key, value)
31+ is CharArray -> putExtra(key, value)
32+ is LongArray -> putExtra(key, value)
33+ is ByteArray -> putExtra(key, value)
34+ is ShortArray -> putExtra(key, value)
35+ is DoubleArray -> putExtra(key, value)
36+ is Serializable -> putExtra(key, value)
37+ is Array <* > -> putExtra(key, value)
38+ is ArrayList <* > -> when (value.getOrNull(0 )) {
39+ is Int -> putIntegerArrayListExtra(key, value as java.util.ArrayList <Int >)
40+ is Integer -> putIntegerArrayListExtra(key, value as java.util.ArrayList <Int >)
41+ is CharSequence -> putCharSequenceArrayListExtra(key, value as java.util.ArrayList <CharSequence >)
42+ is String -> putStringArrayListExtra(key, value as java.util.ArrayList <String >)
43+ is Parcelable -> putParcelableArrayListExtra(key, value as java.util.ArrayList <Parcelable >)
44+ }
45+ else -> throw UnsupportedOperationException (" Unsupported type ${value.javaClass.name} in params" )
46+ }
47+ }
48+
49+ @SuppressLint(" NewApi" )
50+ operator fun Bundle.set (key : String , value : Any ) {
51+ when (value) {
52+ is Boolean -> putBoolean(key, value)
53+ is Byte -> putByte(key, value)
54+ is ByteArray -> putByteArray(key, value)
55+ is IBinder -> putBinder(key, value)
56+ is Char -> putChar(key, value)
57+ is CharArray -> putCharArray(key, value)
58+ is CharSequence -> putCharSequence(key, value)
59+ is Double -> putDouble(key, value)
60+ is DoubleArray -> putDoubleArray(key, value)
61+ is Float -> putFloat(key, value)
62+ is FloatArray -> putFloatArray(key, value)
63+ is Int -> putInt(key, value)
64+ is IntArray -> putIntArray(key, value)
65+ is Long -> putLong(key, value)
66+ is Short -> putShort(key, value)
67+ is ShortArray -> putShortArray(key, value)
68+ is Parcelable -> putParcelable(key, value)
69+ is Serializable -> putSerializable(key, value)
70+ is String -> putString(key, value)
71+ is Array <* > -> when (value.getOrNull(0 )) {
72+ is CharSequence -> putCharSequenceArray(key, value as Array <out CharSequence >)
73+ is String -> putStringArray(key, value as Array <out String >)
74+ is Parcelable -> putParcelableArray(key, value as Array <out Parcelable >)
75+ }
76+ is ArrayList <* > -> when (value.getOrNull(0 )) {
77+ is Int -> putIntegerArrayList(key, value as java.util.ArrayList <Int >)
78+ is Integer -> putIntegerArrayList(key, value as java.util.ArrayList <Int >)
79+ is CharSequence -> putCharSequenceArrayList(key, value as java.util.ArrayList <CharSequence >)
80+ is String -> putStringArrayList(key, value as java.util.ArrayList <String >)
81+ is Parcelable -> putParcelableArrayList(key, value as java.util.ArrayList <Parcelable >)
82+ }
83+ Build .VERSION .SDK_INT >= Build .VERSION_CODES .LOLLIPOP -> when (value) {
84+ is Size -> putSize(key, value)
85+ is SizeF -> putSizeF(key, value)
86+ }
87+ else -> throw UnsupportedOperationException (" Unsupported type ${value.javaClass.name} in params" )
88+ }
89+ }
90+
91+ }
0 commit comments