BundleCompatDonut.smali 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. .class Landroid/support/v4/app/BundleCompatDonut;
  2. .super Ljava/lang/Object;
  3. .source "BundleCompatDonut.java"
  4. # static fields
  5. .field private static final TAG:Ljava/lang/String; = "BundleCompatDonut"
  6. .field private static sGetIBinderMethod:Ljava/lang/reflect/Method;
  7. .field private static sGetIBinderMethodFetched:Z
  8. .field private static sPutIBinderMethod:Ljava/lang/reflect/Method;
  9. .field private static sPutIBinderMethodFetched:Z
  10. # direct methods
  11. .method constructor <init>()V
  12. .locals 0
  13. .prologue
  14. .line 29
  15. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  16. return-void
  17. .end method
  18. .method public static getBinder(Landroid/os/Bundle;Ljava/lang/String;)Landroid/os/IBinder;
  19. .locals 8
  20. .param p0, "bundle" # Landroid/os/Bundle;
  21. .param p1, "key" # Ljava/lang/String;
  22. .prologue
  23. const/4 v2, 0x0
  24. const/4 v7, 0x1
  25. .line 39
  26. sget-boolean v1, Landroid/support/v4/app/BundleCompatDonut;->sGetIBinderMethodFetched:Z
  27. if-nez v1, :cond_0
  28. .line 41
  29. :try_start_0
  30. const-class v1, Landroid/os/Bundle;
  31. const-string v3, "getIBinder"
  32. const/4 v4, 0x1
  33. new-array v4, v4, [Ljava/lang/Class;
  34. const/4 v5, 0x0
  35. const-class v6, Ljava/lang/String;
  36. aput-object v6, v4, v5
  37. invoke-virtual {v1, v3, v4}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
  38. move-result-object v1
  39. sput-object v1, Landroid/support/v4/app/BundleCompatDonut;->sGetIBinderMethod:Ljava/lang/reflect/Method;
  40. .line 42
  41. sget-object v1, Landroid/support/v4/app/BundleCompatDonut;->sGetIBinderMethod:Ljava/lang/reflect/Method;
  42. const/4 v3, 0x1
  43. invoke-virtual {v1, v3}, Ljava/lang/reflect/Method;->setAccessible(Z)V
  44. :try_end_0
  45. .catch Ljava/lang/NoSuchMethodException; {:try_start_0 .. :try_end_0} :catch_0
  46. .line 46
  47. :goto_0
  48. sput-boolean v7, Landroid/support/v4/app/BundleCompatDonut;->sGetIBinderMethodFetched:Z
  49. .line 49
  50. :cond_0
  51. sget-object v1, Landroid/support/v4/app/BundleCompatDonut;->sGetIBinderMethod:Ljava/lang/reflect/Method;
  52. if-eqz v1, :cond_1
  53. .line 51
  54. :try_start_1
  55. sget-object v1, Landroid/support/v4/app/BundleCompatDonut;->sGetIBinderMethod:Ljava/lang/reflect/Method;
  56. const/4 v3, 0x1
  57. new-array v3, v3, [Ljava/lang/Object;
  58. const/4 v4, 0x0
  59. aput-object p1, v3, v4
  60. invoke-virtual {v1, p0, v3}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
  61. move-result-object v1
  62. check-cast v1, Landroid/os/IBinder;
  63. :try_end_1
  64. .catch Ljava/lang/reflect/InvocationTargetException; {:try_start_1 .. :try_end_1} :catch_1
  65. .catch Ljava/lang/IllegalAccessException; {:try_start_1 .. :try_end_1} :catch_1
  66. .catch Ljava/lang/IllegalArgumentException; {:try_start_1 .. :try_end_1} :catch_1
  67. .line 58
  68. :goto_1
  69. return-object v1
  70. .line 43
  71. :catch_0
  72. move-exception v0
  73. .line 44
  74. .local v0, "e":Ljava/lang/NoSuchMethodException;
  75. const-string v1, "BundleCompatDonut"
  76. const-string v3, "Failed to retrieve getIBinder method"
  77. invoke-static {v1, v3, v0}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
  78. goto :goto_0
  79. .line 52
  80. .end local v0 # "e":Ljava/lang/NoSuchMethodException;
  81. :catch_1
  82. move-exception v0
  83. .line 54
  84. .local v0, "e":Ljava/lang/Exception;
  85. const-string v1, "BundleCompatDonut"
  86. const-string v3, "Failed to invoke getIBinder via reflection"
  87. invoke-static {v1, v3, v0}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
  88. .line 55
  89. sput-object v2, Landroid/support/v4/app/BundleCompatDonut;->sGetIBinderMethod:Ljava/lang/reflect/Method;
  90. .end local v0 # "e":Ljava/lang/Exception;
  91. :cond_1
  92. move-object v1, v2
  93. .line 58
  94. goto :goto_1
  95. .end method
  96. .method public static putBinder(Landroid/os/Bundle;Ljava/lang/String;Landroid/os/IBinder;)V
  97. .locals 7
  98. .param p0, "bundle" # Landroid/os/Bundle;
  99. .param p1, "key" # Ljava/lang/String;
  100. .param p2, "binder" # Landroid/os/IBinder;
  101. .prologue
  102. const/4 v6, 0x1
  103. .line 62
  104. sget-boolean v1, Landroid/support/v4/app/BundleCompatDonut;->sPutIBinderMethodFetched:Z
  105. if-nez v1, :cond_0
  106. .line 64
  107. :try_start_0
  108. const-class v1, Landroid/os/Bundle;
  109. const-string v2, "putIBinder"
  110. const/4 v3, 0x2
  111. new-array v3, v3, [Ljava/lang/Class;
  112. const/4 v4, 0x0
  113. const-class v5, Ljava/lang/String;
  114. aput-object v5, v3, v4
  115. const/4 v4, 0x1
  116. const-class v5, Landroid/os/IBinder;
  117. aput-object v5, v3, v4
  118. invoke-virtual {v1, v2, v3}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
  119. move-result-object v1
  120. sput-object v1, Landroid/support/v4/app/BundleCompatDonut;->sPutIBinderMethod:Ljava/lang/reflect/Method;
  121. .line 66
  122. sget-object v1, Landroid/support/v4/app/BundleCompatDonut;->sPutIBinderMethod:Ljava/lang/reflect/Method;
  123. const/4 v2, 0x1
  124. invoke-virtual {v1, v2}, Ljava/lang/reflect/Method;->setAccessible(Z)V
  125. :try_end_0
  126. .catch Ljava/lang/NoSuchMethodException; {:try_start_0 .. :try_end_0} :catch_0
  127. .line 70
  128. :goto_0
  129. sput-boolean v6, Landroid/support/v4/app/BundleCompatDonut;->sPutIBinderMethodFetched:Z
  130. .line 73
  131. :cond_0
  132. sget-object v1, Landroid/support/v4/app/BundleCompatDonut;->sPutIBinderMethod:Ljava/lang/reflect/Method;
  133. if-eqz v1, :cond_1
  134. .line 75
  135. :try_start_1
  136. sget-object v1, Landroid/support/v4/app/BundleCompatDonut;->sPutIBinderMethod:Ljava/lang/reflect/Method;
  137. const/4 v2, 0x2
  138. new-array v2, v2, [Ljava/lang/Object;
  139. const/4 v3, 0x0
  140. aput-object p1, v2, v3
  141. const/4 v3, 0x1
  142. aput-object p2, v2, v3
  143. invoke-virtual {v1, p0, v2}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
  144. :try_end_1
  145. .catch Ljava/lang/reflect/InvocationTargetException; {:try_start_1 .. :try_end_1} :catch_1
  146. .catch Ljava/lang/IllegalAccessException; {:try_start_1 .. :try_end_1} :catch_1
  147. .catch Ljava/lang/IllegalArgumentException; {:try_start_1 .. :try_end_1} :catch_1
  148. .line 82
  149. :cond_1
  150. :goto_1
  151. return-void
  152. .line 67
  153. :catch_0
  154. move-exception v0
  155. .line 68
  156. .local v0, "e":Ljava/lang/NoSuchMethodException;
  157. const-string v1, "BundleCompatDonut"
  158. const-string v2, "Failed to retrieve putIBinder method"
  159. invoke-static {v1, v2, v0}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
  160. goto :goto_0
  161. .line 76
  162. .end local v0 # "e":Ljava/lang/NoSuchMethodException;
  163. :catch_1
  164. move-exception v0
  165. .line 78
  166. .local v0, "e":Ljava/lang/Exception;
  167. const-string v1, "BundleCompatDonut"
  168. const-string v2, "Failed to invoke putIBinder via reflection"
  169. invoke-static {v1, v2, v0}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
  170. .line 79
  171. const/4 v1, 0x0
  172. sput-object v1, Landroid/support/v4/app/BundleCompatDonut;->sPutIBinderMethod:Ljava/lang/reflect/Method;
  173. goto :goto_1
  174. .end method