PermissionChecker.smali 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. .class public final Landroid/support/v4/content/PermissionChecker;
  2. .super Ljava/lang/Object;
  3. .source "PermissionChecker.java"
  4. # annotations
  5. .annotation system Ldalvik/annotation/MemberClasses;
  6. value = {
  7. Landroid/support/v4/content/PermissionChecker$PermissionResult;
  8. }
  9. .end annotation
  10. # static fields
  11. .field public static final PERMISSION_DENIED:I = -0x1
  12. .field public static final PERMISSION_DENIED_APP_OP:I = -0x2
  13. .field public static final PERMISSION_GRANTED:I
  14. # direct methods
  15. .method private constructor <init>()V
  16. .locals 0
  17. .prologue
  18. .line 70
  19. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  20. .line 72
  21. return-void
  22. .end method
  23. .method public static checkCallingOrSelfPermission(Landroid/content/Context;Ljava/lang/String;)I
  24. .locals 3
  25. .param p0, "context" # Landroid/content/Context;
  26. .annotation build Landroid/support/annotation/NonNull;
  27. .end annotation
  28. .end param
  29. .param p1, "permission" # Ljava/lang/String;
  30. .annotation build Landroid/support/annotation/NonNull;
  31. .end annotation
  32. .end param
  33. .prologue
  34. .line 160
  35. invoke-static {}, Landroid/os/Binder;->getCallingPid()I
  36. move-result v1
  37. invoke-static {}, Landroid/os/Process;->myPid()I
  38. move-result v2
  39. if-ne v1, v2, :cond_0
  40. invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
  41. move-result-object v0
  42. .line 162
  43. .local v0, "packageName":Ljava/lang/String;
  44. :goto_0
  45. invoke-static {}, Landroid/os/Binder;->getCallingPid()I
  46. move-result v1
  47. invoke-static {}, Landroid/os/Binder;->getCallingUid()I
  48. move-result v2
  49. invoke-static {p0, p1, v1, v2, v0}, Landroid/support/v4/content/PermissionChecker;->checkPermission(Landroid/content/Context;Ljava/lang/String;IILjava/lang/String;)I
  50. move-result v1
  51. return v1
  52. .line 160
  53. .end local v0 # "packageName":Ljava/lang/String;
  54. :cond_0
  55. const/4 v0, 0x0
  56. goto :goto_0
  57. .end method
  58. .method public static checkCallingPermission(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)I
  59. .locals 2
  60. .param p0, "context" # Landroid/content/Context;
  61. .annotation build Landroid/support/annotation/NonNull;
  62. .end annotation
  63. .end param
  64. .param p1, "permission" # Ljava/lang/String;
  65. .annotation build Landroid/support/annotation/NonNull;
  66. .end annotation
  67. .end param
  68. .param p2, "packageName" # Ljava/lang/String;
  69. .prologue
  70. .line 142
  71. invoke-static {}, Landroid/os/Binder;->getCallingPid()I
  72. move-result v0
  73. invoke-static {}, Landroid/os/Process;->myPid()I
  74. move-result v1
  75. if-ne v0, v1, :cond_0
  76. .line 143
  77. const/4 v0, -0x1
  78. .line 145
  79. :goto_0
  80. return v0
  81. :cond_0
  82. invoke-static {}, Landroid/os/Binder;->getCallingPid()I
  83. move-result v0
  84. invoke-static {}, Landroid/os/Binder;->getCallingUid()I
  85. move-result v1
  86. invoke-static {p0, p1, v0, v1, p2}, Landroid/support/v4/content/PermissionChecker;->checkPermission(Landroid/content/Context;Ljava/lang/String;IILjava/lang/String;)I
  87. move-result v0
  88. goto :goto_0
  89. .end method
  90. .method public static checkPermission(Landroid/content/Context;Ljava/lang/String;IILjava/lang/String;)I
  91. .locals 5
  92. .param p0, "context" # Landroid/content/Context;
  93. .annotation build Landroid/support/annotation/NonNull;
  94. .end annotation
  95. .end param
  96. .param p1, "permission" # Ljava/lang/String;
  97. .annotation build Landroid/support/annotation/NonNull;
  98. .end annotation
  99. .end param
  100. .param p2, "pid" # I
  101. .param p3, "uid" # I
  102. .param p4, "packageName" # Ljava/lang/String;
  103. .prologue
  104. const/4 v3, 0x0
  105. const/4 v2, -0x1
  106. .line 89
  107. invoke-virtual {p0, p1, p2, p3}, Landroid/content/Context;->checkPermission(Ljava/lang/String;II)I
  108. move-result v4
  109. if-ne v4, v2, :cond_1
  110. .line 111
  111. :cond_0
  112. :goto_0
  113. return v2
  114. .line 93
  115. :cond_1
  116. invoke-static {p1}, Landroid/support/v4/app/AppOpsManagerCompat;->permissionToOp(Ljava/lang/String;)Ljava/lang/String;
  117. move-result-object v0
  118. .line 94
  119. .local v0, "op":Ljava/lang/String;
  120. if-nez v0, :cond_2
  121. move v2, v3
  122. .line 95
  123. goto :goto_0
  124. .line 98
  125. :cond_2
  126. if-nez p4, :cond_3
  127. .line 99
  128. invoke-virtual {p0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
  129. move-result-object v4
  130. invoke-virtual {v4, p3}, Landroid/content/pm/PackageManager;->getPackagesForUid(I)[Ljava/lang/String;
  131. move-result-object v1
  132. .line 100
  133. .local v1, "packageNames":[Ljava/lang/String;
  134. if-eqz v1, :cond_0
  135. array-length v4, v1
  136. if-lez v4, :cond_0
  137. .line 103
  138. aget-object p4, v1, v3
  139. .line 106
  140. .end local v1 # "packageNames":[Ljava/lang/String;
  141. :cond_3
  142. invoke-static {p0, v0, p4}, Landroid/support/v4/app/AppOpsManagerCompat;->noteProxyOp(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)I
  143. move-result v2
  144. if-eqz v2, :cond_4
  145. .line 108
  146. const/4 v2, -0x2
  147. goto :goto_0
  148. :cond_4
  149. move v2, v3
  150. .line 111
  151. goto :goto_0
  152. .end method
  153. .method public static checkSelfPermission(Landroid/content/Context;Ljava/lang/String;)I
  154. .locals 3
  155. .param p0, "context" # Landroid/content/Context;
  156. .annotation build Landroid/support/annotation/NonNull;
  157. .end annotation
  158. .end param
  159. .param p1, "permission" # Ljava/lang/String;
  160. .annotation build Landroid/support/annotation/NonNull;
  161. .end annotation
  162. .end param
  163. .prologue
  164. .line 125
  165. invoke-static {}, Landroid/os/Process;->myPid()I
  166. move-result v0
  167. invoke-static {}, Landroid/os/Process;->myUid()I
  168. move-result v1
  169. invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
  170. move-result-object v2
  171. invoke-static {p0, p1, v0, v1, v2}, Landroid/support/v4/content/PermissionChecker;->checkPermission(Landroid/content/Context;Ljava/lang/String;IILjava/lang/String;)I
  172. move-result v0
  173. return v0
  174. .end method