RxPermissionsFragment.smali 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391
  1. .class public Lcom/tbruyelle/rxpermissions2/RxPermissionsFragment;
  2. .super Landroid/app/Fragment;
  3. .source "RxPermissionsFragment.java"
  4. # static fields
  5. .field private static final PERMISSIONS_REQUEST_CODE:I = 0x2a
  6. # instance fields
  7. .field private mLogging:Z
  8. .field private mSubjects:Ljava/util/Map;
  9. .annotation system Ldalvik/annotation/Signature;
  10. value = {
  11. "Ljava/util/Map<",
  12. "Ljava/lang/String;",
  13. "Lio/reactivex/subjects/PublishSubject<",
  14. "Lcom/tbruyelle/rxpermissions2/Permission;",
  15. ">;>;"
  16. }
  17. .end annotation
  18. .end field
  19. # direct methods
  20. .method public constructor <init>()V
  21. .locals 1
  22. .line 23
  23. invoke-direct {p0}, Landroid/app/Fragment;-><init>()V
  24. .line 20
  25. new-instance v0, Ljava/util/HashMap;
  26. invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
  27. iput-object v0, p0, Lcom/tbruyelle/rxpermissions2/RxPermissionsFragment;->mSubjects:Ljava/util/Map;
  28. .line 24
  29. return-void
  30. .end method
  31. # virtual methods
  32. .method public containsByPermission(Ljava/lang/String;)Z
  33. .locals 1
  34. .param p1, "permission" # Ljava/lang/String;
  35. .line 88
  36. iget-object v0, p0, Lcom/tbruyelle/rxpermissions2/RxPermissionsFragment;->mSubjects:Ljava/util/Map;
  37. invoke-interface {v0, p1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
  38. move-result v0
  39. return v0
  40. .end method
  41. .method public getSubjectByPermission(Ljava/lang/String;)Lio/reactivex/subjects/PublishSubject;
  42. .locals 1
  43. .param p1, "permission" # Ljava/lang/String;
  44. .annotation system Ldalvik/annotation/Signature;
  45. value = {
  46. "(",
  47. "Ljava/lang/String;",
  48. ")",
  49. "Lio/reactivex/subjects/PublishSubject<",
  50. "Lcom/tbruyelle/rxpermissions2/Permission;",
  51. ">;"
  52. }
  53. .end annotation
  54. .line 84
  55. iget-object v0, p0, Lcom/tbruyelle/rxpermissions2/RxPermissionsFragment;->mSubjects:Ljava/util/Map;
  56. invoke-interface {v0, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
  57. move-result-object v0
  58. check-cast v0, Lio/reactivex/subjects/PublishSubject;
  59. return-object v0
  60. .end method
  61. .method isGranted(Ljava/lang/String;)Z
  62. .locals 1
  63. .param p1, "permission" # Ljava/lang/String;
  64. .line 71
  65. invoke-virtual {p0}, Lcom/tbruyelle/rxpermissions2/RxPermissionsFragment;->getActivity()Landroid/app/Activity;
  66. move-result-object v0
  67. invoke-virtual {v0, p1}, Landroid/app/Activity;->checkSelfPermission(Ljava/lang/String;)I
  68. move-result v0
  69. if-nez v0, :cond_0
  70. const/4 v0, 0x1
  71. goto :goto_0
  72. :cond_0
  73. const/4 v0, 0x0
  74. :goto_0
  75. return v0
  76. .end method
  77. .method isRevoked(Ljava/lang/String;)Z
  78. .locals 2
  79. .param p1, "permission" # Ljava/lang/String;
  80. .line 76
  81. invoke-virtual {p0}, Lcom/tbruyelle/rxpermissions2/RxPermissionsFragment;->getActivity()Landroid/app/Activity;
  82. move-result-object v0
  83. invoke-virtual {v0}, Landroid/app/Activity;->getPackageManager()Landroid/content/pm/PackageManager;
  84. move-result-object v0
  85. invoke-virtual {p0}, Lcom/tbruyelle/rxpermissions2/RxPermissionsFragment;->getActivity()Landroid/app/Activity;
  86. move-result-object v1
  87. invoke-virtual {v1}, Landroid/app/Activity;->getPackageName()Ljava/lang/String;
  88. move-result-object v1
  89. invoke-virtual {v0, p1, v1}, Landroid/content/pm/PackageManager;->isPermissionRevokedByPolicy(Ljava/lang/String;Ljava/lang/String;)Z
  90. move-result v0
  91. return v0
  92. .end method
  93. .method log(Ljava/lang/String;)V
  94. .locals 1
  95. .param p1, "message" # Ljava/lang/String;
  96. .line 96
  97. iget-boolean v0, p0, Lcom/tbruyelle/rxpermissions2/RxPermissionsFragment;->mLogging:Z
  98. if-eqz v0, :cond_0
  99. .line 97
  100. const-string v0, "RxPermissions"
  101. invoke-static {v0, p1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
  102. .line 99
  103. :cond_0
  104. return-void
  105. .end method
  106. .method public onCreate(Landroid/os/Bundle;)V
  107. .locals 1
  108. .param p1, "savedInstanceState" # Landroid/os/Bundle;
  109. .line 28
  110. invoke-super {p0, p1}, Landroid/app/Fragment;->onCreate(Landroid/os/Bundle;)V
  111. .line 29
  112. const/4 v0, 0x1
  113. invoke-virtual {p0, v0}, Lcom/tbruyelle/rxpermissions2/RxPermissionsFragment;->setRetainInstance(Z)V
  114. .line 30
  115. return-void
  116. .end method
  117. .method public onRequestPermissionsResult(I[Ljava/lang/String;[I)V
  118. .locals 3
  119. .param p1, "requestCode" # I
  120. .param p2, "permissions" # [Ljava/lang/String;
  121. .param p3, "grantResults" # [I
  122. .line 39
  123. invoke-super {p0, p1, p2, p3}, Landroid/app/Fragment;->onRequestPermissionsResult(I[Ljava/lang/String;[I)V
  124. .line 41
  125. const/16 v0, 0x2a
  126. if-eq p1, v0, :cond_0
  127. return-void
  128. .line 43
  129. :cond_0
  130. array-length v0, p2
  131. new-array v0, v0, [Z
  132. .line 45
  133. .local v0, "shouldShowRequestPermissionRationale":[Z
  134. const/4 v1, 0x0
  135. .local v1, "i":I
  136. :goto_0
  137. array-length v2, p2
  138. if-ge v1, v2, :cond_1
  139. .line 46
  140. aget-object v2, p2, v1
  141. invoke-virtual {p0, v2}, Lcom/tbruyelle/rxpermissions2/RxPermissionsFragment;->shouldShowRequestPermissionRationale(Ljava/lang/String;)Z
  142. move-result v2
  143. aput-boolean v2, v0, v1
  144. .line 45
  145. add-int/lit8 v1, v1, 0x1
  146. goto :goto_0
  147. .line 49
  148. .end local v1 # "i":I
  149. :cond_1
  150. invoke-virtual {p0, p2, p3, v0}, Lcom/tbruyelle/rxpermissions2/RxPermissionsFragment;->onRequestPermissionsResult([Ljava/lang/String;[I[Z)V
  151. .line 50
  152. return-void
  153. .end method
  154. .method onRequestPermissionsResult([Ljava/lang/String;[I[Z)V
  155. .locals 7
  156. .param p1, "permissions" # [Ljava/lang/String;
  157. .param p2, "grantResults" # [I
  158. .param p3, "shouldShowRequestPermissionRationale" # [Z
  159. .line 53
  160. const/4 v0, 0x0
  161. .local v0, "i":I
  162. array-length v1, p1
  163. .local v1, "size":I
  164. :goto_0
  165. if-ge v0, v1, :cond_2
  166. .line 54
  167. new-instance v2, Ljava/lang/StringBuilder;
  168. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  169. const-string v3, "onRequestPermissionsResult "
  170. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  171. aget-object v3, p1, v0
  172. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  173. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  174. move-result-object v2
  175. invoke-virtual {p0, v2}, Lcom/tbruyelle/rxpermissions2/RxPermissionsFragment;->log(Ljava/lang/String;)V
  176. .line 56
  177. iget-object v2, p0, Lcom/tbruyelle/rxpermissions2/RxPermissionsFragment;->mSubjects:Ljava/util/Map;
  178. aget-object v3, p1, v0
  179. invoke-interface {v2, v3}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
  180. move-result-object v2
  181. check-cast v2, Lio/reactivex/subjects/PublishSubject;
  182. .line 57
  183. .local v2, "subject":Lio/reactivex/subjects/PublishSubject;, "Lio/reactivex/subjects/PublishSubject<Lcom/tbruyelle/rxpermissions2/Permission;>;"
  184. if-nez v2, :cond_0
  185. .line 59
  186. const-string v3, "RxPermissions"
  187. const-string v4, "RxPermissions.onRequestPermissionsResult invoked but didn\'t find the corresponding permission request."
  188. invoke-static {v3, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
  189. .line 60
  190. return-void
  191. .line 62
  192. :cond_0
  193. iget-object v3, p0, Lcom/tbruyelle/rxpermissions2/RxPermissionsFragment;->mSubjects:Ljava/util/Map;
  194. aget-object v4, p1, v0
  195. invoke-interface {v3, v4}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
  196. .line 63
  197. aget v3, p2, v0
  198. if-nez v3, :cond_1
  199. const/4 v3, 0x1
  200. goto :goto_1
  201. :cond_1
  202. const/4 v3, 0x0
  203. .line 64
  204. .local v3, "granted":Z
  205. :goto_1
  206. new-instance v4, Lcom/tbruyelle/rxpermissions2/Permission;
  207. aget-object v5, p1, v0
  208. aget-boolean v6, p3, v0
  209. invoke-direct {v4, v5, v3, v6}, Lcom/tbruyelle/rxpermissions2/Permission;-><init>(Ljava/lang/String;ZZ)V
  210. invoke-virtual {v2, v4}, Lio/reactivex/subjects/PublishSubject;->onNext(Ljava/lang/Object;)V
  211. .line 65
  212. invoke-virtual {v2}, Lio/reactivex/subjects/PublishSubject;->onComplete()V
  213. .line 53
  214. .end local v2 # "subject":Lio/reactivex/subjects/PublishSubject;, "Lio/reactivex/subjects/PublishSubject<Lcom/tbruyelle/rxpermissions2/Permission;>;"
  215. .end local v3 # "granted":Z
  216. add-int/lit8 v0, v0, 0x1
  217. goto :goto_0
  218. .line 67
  219. .end local v0 # "i":I
  220. .end local v1 # "size":I
  221. :cond_2
  222. return-void
  223. .end method
  224. .method requestPermissions([Ljava/lang/String;)V
  225. .locals 1
  226. .param p1, "permissions" # [Ljava/lang/String;
  227. .line 34
  228. const/16 v0, 0x2a
  229. invoke-virtual {p0, p1, v0}, Lcom/tbruyelle/rxpermissions2/RxPermissionsFragment;->requestPermissions([Ljava/lang/String;I)V
  230. .line 35
  231. return-void
  232. .end method
  233. .method public setLogging(Z)V
  234. .locals 0
  235. .param p1, "logging" # Z
  236. .line 80
  237. iput-boolean p1, p0, Lcom/tbruyelle/rxpermissions2/RxPermissionsFragment;->mLogging:Z
  238. .line 81
  239. return-void
  240. .end method
  241. .method public setSubjectForPermission(Ljava/lang/String;Lio/reactivex/subjects/PublishSubject;)Lio/reactivex/subjects/PublishSubject;
  242. .locals 1
  243. .param p1, "permission" # Ljava/lang/String;
  244. .annotation system Ldalvik/annotation/Signature;
  245. value = {
  246. "(",
  247. "Ljava/lang/String;",
  248. "Lio/reactivex/subjects/PublishSubject<",
  249. "Lcom/tbruyelle/rxpermissions2/Permission;",
  250. ">;)",
  251. "Lio/reactivex/subjects/PublishSubject<",
  252. "Lcom/tbruyelle/rxpermissions2/Permission;",
  253. ">;"
  254. }
  255. .end annotation
  256. .line 92
  257. .local p2, "subject":Lio/reactivex/subjects/PublishSubject;, "Lio/reactivex/subjects/PublishSubject<Lcom/tbruyelle/rxpermissions2/Permission;>;"
  258. iget-object v0, p0, Lcom/tbruyelle/rxpermissions2/RxPermissionsFragment;->mSubjects:Ljava/util/Map;
  259. invoke-interface {v0, p1, p2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
  260. move-result-object v0
  261. check-cast v0, Lio/reactivex/subjects/PublishSubject;
  262. return-object v0
  263. .end method