NotificationManagerCompat.smali 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578
  1. .class public final Landroid/support/v4/app/NotificationManagerCompat;
  2. .super Ljava/lang/Object;
  3. .source "NotificationManagerCompat.java"
  4. # annotations
  5. .annotation system Ldalvik/annotation/MemberClasses;
  6. value = {
  7. Landroid/support/v4/app/NotificationManagerCompat$CancelTask;,
  8. Landroid/support/v4/app/NotificationManagerCompat$NotifyTask;,
  9. Landroid/support/v4/app/NotificationManagerCompat$Task;,
  10. Landroid/support/v4/app/NotificationManagerCompat$ServiceConnectedEvent;,
  11. Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;,
  12. Landroid/support/v4/app/NotificationManagerCompat$ImplIceCreamSandwich;,
  13. Landroid/support/v4/app/NotificationManagerCompat$ImplEclair;,
  14. Landroid/support/v4/app/NotificationManagerCompat$ImplBase;,
  15. Landroid/support/v4/app/NotificationManagerCompat$Impl;
  16. }
  17. .end annotation
  18. # static fields
  19. .field public static final ACTION_BIND_SIDE_CHANNEL:Ljava/lang/String; = "android.support.BIND_NOTIFICATION_SIDE_CHANNEL"
  20. .field public static final EXTRA_USE_SIDE_CHANNEL:Ljava/lang/String; = "android.support.useSideChannel"
  21. .field private static final IMPL:Landroid/support/v4/app/NotificationManagerCompat$Impl;
  22. .field static final MAX_SIDE_CHANNEL_SDK_VERSION:I = 0x13
  23. .field private static final SETTING_ENABLED_NOTIFICATION_LISTENERS:Ljava/lang/String; = "enabled_notification_listeners"
  24. .field private static final SIDE_CHANNEL_BIND_FLAGS:I
  25. .field private static final SIDE_CHANNEL_RETRY_BASE_INTERVAL_MS:I = 0x3e8
  26. .field private static final SIDE_CHANNEL_RETRY_MAX_COUNT:I = 0x6
  27. .field private static final TAG:Ljava/lang/String; = "NotifManCompat"
  28. .field private static sEnabledNotificationListenerPackages:Ljava/util/Set;
  29. .annotation system Ldalvik/annotation/Signature;
  30. value = {
  31. "Ljava/util/Set",
  32. "<",
  33. "Ljava/lang/String;",
  34. ">;"
  35. }
  36. .end annotation
  37. .end field
  38. .field private static sEnabledNotificationListeners:Ljava/lang/String;
  39. .field private static final sEnabledNotificationListenersLock:Ljava/lang/Object;
  40. .field private static final sLock:Ljava/lang/Object;
  41. .field private static sSideChannelManager:Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;
  42. # instance fields
  43. .field private final mContext:Landroid/content/Context;
  44. .field private final mNotificationManager:Landroid/app/NotificationManager;
  45. # direct methods
  46. .method static constructor <clinit>()V
  47. .locals 2
  48. .prologue
  49. .line 88
  50. new-instance v0, Ljava/lang/Object;
  51. invoke-direct {v0}, Ljava/lang/Object;-><init>()V
  52. sput-object v0, Landroid/support/v4/app/NotificationManagerCompat;->sEnabledNotificationListenersLock:Ljava/lang/Object;
  53. .line 92
  54. new-instance v0, Ljava/util/HashSet;
  55. invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
  56. sput-object v0, Landroid/support/v4/app/NotificationManagerCompat;->sEnabledNotificationListenerPackages:Ljava/util/Set;
  57. .line 97
  58. new-instance v0, Ljava/lang/Object;
  59. invoke-direct {v0}, Ljava/lang/Object;-><init>()V
  60. sput-object v0, Landroid/support/v4/app/NotificationManagerCompat;->sLock:Ljava/lang/Object;
  61. .line 165
  62. sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
  63. const/16 v1, 0xe
  64. if-lt v0, v1, :cond_0
  65. .line 166
  66. new-instance v0, Landroid/support/v4/app/NotificationManagerCompat$ImplIceCreamSandwich;
  67. invoke-direct {v0}, Landroid/support/v4/app/NotificationManagerCompat$ImplIceCreamSandwich;-><init>()V
  68. sput-object v0, Landroid/support/v4/app/NotificationManagerCompat;->IMPL:Landroid/support/v4/app/NotificationManagerCompat$Impl;
  69. .line 172
  70. :goto_0
  71. sget-object v0, Landroid/support/v4/app/NotificationManagerCompat;->IMPL:Landroid/support/v4/app/NotificationManagerCompat$Impl;
  72. invoke-interface {v0}, Landroid/support/v4/app/NotificationManagerCompat$Impl;->getSideChannelBindFlags()I
  73. move-result v0
  74. sput v0, Landroid/support/v4/app/NotificationManagerCompat;->SIDE_CHANNEL_BIND_FLAGS:I
  75. .line 173
  76. return-void
  77. .line 167
  78. :cond_0
  79. sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
  80. const/4 v1, 0x5
  81. if-lt v0, v1, :cond_1
  82. .line 168
  83. new-instance v0, Landroid/support/v4/app/NotificationManagerCompat$ImplEclair;
  84. invoke-direct {v0}, Landroid/support/v4/app/NotificationManagerCompat$ImplEclair;-><init>()V
  85. sput-object v0, Landroid/support/v4/app/NotificationManagerCompat;->IMPL:Landroid/support/v4/app/NotificationManagerCompat$Impl;
  86. goto :goto_0
  87. .line 170
  88. :cond_1
  89. new-instance v0, Landroid/support/v4/app/NotificationManagerCompat$ImplBase;
  90. invoke-direct {v0}, Landroid/support/v4/app/NotificationManagerCompat$ImplBase;-><init>()V
  91. sput-object v0, Landroid/support/v4/app/NotificationManagerCompat;->IMPL:Landroid/support/v4/app/NotificationManagerCompat$Impl;
  92. goto :goto_0
  93. .end method
  94. .method private constructor <init>(Landroid/content/Context;)V
  95. .locals 2
  96. .param p1, "context" # Landroid/content/Context;
  97. .prologue
  98. .line 106
  99. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  100. .line 107
  101. iput-object p1, p0, Landroid/support/v4/app/NotificationManagerCompat;->mContext:Landroid/content/Context;
  102. .line 108
  103. iget-object v0, p0, Landroid/support/v4/app/NotificationManagerCompat;->mContext:Landroid/content/Context;
  104. const-string v1, "notification"
  105. invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
  106. move-result-object v0
  107. check-cast v0, Landroid/app/NotificationManager;
  108. iput-object v0, p0, Landroid/support/v4/app/NotificationManagerCompat;->mNotificationManager:Landroid/app/NotificationManager;
  109. .line 110
  110. return-void
  111. .end method
  112. .method static synthetic access$000()I
  113. .locals 1
  114. .prologue
  115. .line 54
  116. sget v0, Landroid/support/v4/app/NotificationManagerCompat;->SIDE_CHANNEL_BIND_FLAGS:I
  117. return v0
  118. .end method
  119. .method public static from(Landroid/content/Context;)Landroid/support/v4/app/NotificationManagerCompat;
  120. .locals 1
  121. .param p0, "context" # Landroid/content/Context;
  122. .prologue
  123. .line 103
  124. new-instance v0, Landroid/support/v4/app/NotificationManagerCompat;
  125. invoke-direct {v0, p0}, Landroid/support/v4/app/NotificationManagerCompat;-><init>(Landroid/content/Context;)V
  126. return-object v0
  127. .end method
  128. .method public static getEnabledListenerPackages(Landroid/content/Context;)Ljava/util/Set;
  129. .locals 10
  130. .param p0, "context" # Landroid/content/Context;
  131. .annotation system Ldalvik/annotation/Signature;
  132. value = {
  133. "(",
  134. "Landroid/content/Context;",
  135. ")",
  136. "Ljava/util/Set",
  137. "<",
  138. "Ljava/lang/String;",
  139. ">;"
  140. }
  141. .end annotation
  142. .prologue
  143. .line 233
  144. invoke-virtual {p0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
  145. move-result-object v8
  146. const-string v9, "enabled_notification_listeners"
  147. invoke-static {v8, v9}, Landroid/provider/Settings$Secure;->getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;
  148. move-result-object v4
  149. .line 237
  150. .local v4, "enabledNotificationListeners":Ljava/lang/String;
  151. if-eqz v4, :cond_2
  152. sget-object v8, Landroid/support/v4/app/NotificationManagerCompat;->sEnabledNotificationListeners:Ljava/lang/String;
  153. invoke-virtual {v4, v8}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
  154. move-result v8
  155. if-nez v8, :cond_2
  156. .line 239
  157. const-string v8, ":"
  158. invoke-virtual {v4, v8}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
  159. move-result-object v3
  160. .line 240
  161. .local v3, "components":[Ljava/lang/String;
  162. new-instance v7, Ljava/util/HashSet;
  163. array-length v8, v3
  164. invoke-direct {v7, v8}, Ljava/util/HashSet;-><init>(I)V
  165. .line 241
  166. .local v7, "packageNames":Ljava/util/Set;, "Ljava/util/Set<Ljava/lang/String;>;"
  167. move-object v0, v3
  168. .local v0, "arr$":[Ljava/lang/String;
  169. array-length v6, v0
  170. .local v6, "len$":I
  171. const/4 v5, 0x0
  172. .local v5, "i$":I
  173. :goto_0
  174. if-ge v5, v6, :cond_1
  175. aget-object v1, v0, v5
  176. .line 242
  177. .local v1, "component":Ljava/lang/String;
  178. invoke-static {v1}, Landroid/content/ComponentName;->unflattenFromString(Ljava/lang/String;)Landroid/content/ComponentName;
  179. move-result-object v2
  180. .line 243
  181. .local v2, "componentName":Landroid/content/ComponentName;
  182. if-eqz v2, :cond_0
  183. .line 244
  184. invoke-virtual {v2}, Landroid/content/ComponentName;->getPackageName()Ljava/lang/String;
  185. move-result-object v8
  186. invoke-interface {v7, v8}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
  187. .line 241
  188. :cond_0
  189. add-int/lit8 v5, v5, 0x1
  190. goto :goto_0
  191. .line 247
  192. .end local v1 # "component":Ljava/lang/String;
  193. .end local v2 # "componentName":Landroid/content/ComponentName;
  194. :cond_1
  195. sget-object v9, Landroid/support/v4/app/NotificationManagerCompat;->sEnabledNotificationListenersLock:Ljava/lang/Object;
  196. monitor-enter v9
  197. .line 248
  198. :try_start_0
  199. sput-object v7, Landroid/support/v4/app/NotificationManagerCompat;->sEnabledNotificationListenerPackages:Ljava/util/Set;
  200. .line 249
  201. sput-object v4, Landroid/support/v4/app/NotificationManagerCompat;->sEnabledNotificationListeners:Ljava/lang/String;
  202. .line 250
  203. monitor-exit v9
  204. :try_end_0
  205. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  206. .line 252
  207. .end local v0 # "arr$":[Ljava/lang/String;
  208. .end local v3 # "components":[Ljava/lang/String;
  209. .end local v5 # "i$":I
  210. .end local v6 # "len$":I
  211. .end local v7 # "packageNames":Ljava/util/Set;, "Ljava/util/Set<Ljava/lang/String;>;"
  212. :cond_2
  213. sget-object v8, Landroid/support/v4/app/NotificationManagerCompat;->sEnabledNotificationListenerPackages:Ljava/util/Set;
  214. return-object v8
  215. .line 250
  216. .restart local v0 # "arr$":[Ljava/lang/String;
  217. .restart local v3 # "components":[Ljava/lang/String;
  218. .restart local v5 # "i$":I
  219. .restart local v6 # "len$":I
  220. .restart local v7 # "packageNames":Ljava/util/Set;, "Ljava/util/Set<Ljava/lang/String;>;"
  221. :catchall_0
  222. move-exception v8
  223. :try_start_1
  224. monitor-exit v9
  225. :try_end_1
  226. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  227. throw v8
  228. .end method
  229. .method private pushSideChannelQueue(Landroid/support/v4/app/NotificationManagerCompat$Task;)V
  230. .locals 3
  231. .param p1, "task" # Landroid/support/v4/app/NotificationManagerCompat$Task;
  232. .prologue
  233. .line 267
  234. sget-object v1, Landroid/support/v4/app/NotificationManagerCompat;->sLock:Ljava/lang/Object;
  235. monitor-enter v1
  236. .line 268
  237. :try_start_0
  238. sget-object v0, Landroid/support/v4/app/NotificationManagerCompat;->sSideChannelManager:Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;
  239. if-nez v0, :cond_0
  240. .line 269
  241. new-instance v0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;
  242. iget-object v2, p0, Landroid/support/v4/app/NotificationManagerCompat;->mContext:Landroid/content/Context;
  243. invoke-virtual {v2}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;
  244. move-result-object v2
  245. invoke-direct {v0, v2}, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;-><init>(Landroid/content/Context;)V
  246. sput-object v0, Landroid/support/v4/app/NotificationManagerCompat;->sSideChannelManager:Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;
  247. .line 271
  248. :cond_0
  249. monitor-exit v1
  250. :try_end_0
  251. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  252. .line 272
  253. sget-object v0, Landroid/support/v4/app/NotificationManagerCompat;->sSideChannelManager:Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;
  254. invoke-virtual {v0, p1}, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->queueTask(Landroid/support/v4/app/NotificationManagerCompat$Task;)V
  255. .line 273
  256. return-void
  257. .line 271
  258. :catchall_0
  259. move-exception v0
  260. :try_start_1
  261. monitor-exit v1
  262. :try_end_1
  263. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  264. throw v0
  265. .end method
  266. .method private static useSideChannelForNotification(Landroid/app/Notification;)Z
  267. .locals 2
  268. .param p0, "notification" # Landroid/app/Notification;
  269. .prologue
  270. .line 259
  271. invoke-static {p0}, Landroid/support/v4/app/NotificationCompat;->getExtras(Landroid/app/Notification;)Landroid/os/Bundle;
  272. move-result-object v0
  273. .line 260
  274. .local v0, "extras":Landroid/os/Bundle;
  275. if-eqz v0, :cond_0
  276. const-string v1, "android.support.useSideChannel"
  277. invoke-virtual {v0, v1}, Landroid/os/Bundle;->getBoolean(Ljava/lang/String;)Z
  278. move-result v1
  279. if-eqz v1, :cond_0
  280. const/4 v1, 0x1
  281. :goto_0
  282. return v1
  283. :cond_0
  284. const/4 v1, 0x0
  285. goto :goto_0
  286. .end method
  287. # virtual methods
  288. .method public cancel(I)V
  289. .locals 1
  290. .param p1, "id" # I
  291. .prologue
  292. .line 180
  293. const/4 v0, 0x0
  294. invoke-virtual {p0, v0, p1}, Landroid/support/v4/app/NotificationManagerCompat;->cancel(Ljava/lang/String;I)V
  295. .line 181
  296. return-void
  297. .end method
  298. .method public cancel(Ljava/lang/String;I)V
  299. .locals 2
  300. .param p1, "tag" # Ljava/lang/String;
  301. .param p2, "id" # I
  302. .prologue
  303. .line 189
  304. sget-object v0, Landroid/support/v4/app/NotificationManagerCompat;->IMPL:Landroid/support/v4/app/NotificationManagerCompat$Impl;
  305. iget-object v1, p0, Landroid/support/v4/app/NotificationManagerCompat;->mNotificationManager:Landroid/app/NotificationManager;
  306. invoke-interface {v0, v1, p1, p2}, Landroid/support/v4/app/NotificationManagerCompat$Impl;->cancelNotification(Landroid/app/NotificationManager;Ljava/lang/String;I)V
  307. .line 190
  308. sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
  309. const/16 v1, 0x13
  310. if-gt v0, v1, :cond_0
  311. .line 191
  312. new-instance v0, Landroid/support/v4/app/NotificationManagerCompat$CancelTask;
  313. iget-object v1, p0, Landroid/support/v4/app/NotificationManagerCompat;->mContext:Landroid/content/Context;
  314. invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
  315. move-result-object v1
  316. invoke-direct {v0, v1, p2, p1}, Landroid/support/v4/app/NotificationManagerCompat$CancelTask;-><init>(Ljava/lang/String;ILjava/lang/String;)V
  317. invoke-direct {p0, v0}, Landroid/support/v4/app/NotificationManagerCompat;->pushSideChannelQueue(Landroid/support/v4/app/NotificationManagerCompat$Task;)V
  318. .line 193
  319. :cond_0
  320. return-void
  321. .end method
  322. .method public cancelAll()V
  323. .locals 2
  324. .prologue
  325. .line 197
  326. iget-object v0, p0, Landroid/support/v4/app/NotificationManagerCompat;->mNotificationManager:Landroid/app/NotificationManager;
  327. invoke-virtual {v0}, Landroid/app/NotificationManager;->cancelAll()V
  328. .line 198
  329. sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
  330. const/16 v1, 0x13
  331. if-gt v0, v1, :cond_0
  332. .line 199
  333. new-instance v0, Landroid/support/v4/app/NotificationManagerCompat$CancelTask;
  334. iget-object v1, p0, Landroid/support/v4/app/NotificationManagerCompat;->mContext:Landroid/content/Context;
  335. invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
  336. move-result-object v1
  337. invoke-direct {v0, v1}, Landroid/support/v4/app/NotificationManagerCompat$CancelTask;-><init>(Ljava/lang/String;)V
  338. invoke-direct {p0, v0}, Landroid/support/v4/app/NotificationManagerCompat;->pushSideChannelQueue(Landroid/support/v4/app/NotificationManagerCompat$Task;)V
  339. .line 201
  340. :cond_0
  341. return-void
  342. .end method
  343. .method public notify(ILandroid/app/Notification;)V
  344. .locals 1
  345. .param p1, "id" # I
  346. .param p2, "notification" # Landroid/app/Notification;
  347. .prologue
  348. .line 209
  349. const/4 v0, 0x0
  350. invoke-virtual {p0, v0, p1, p2}, Landroid/support/v4/app/NotificationManagerCompat;->notify(Ljava/lang/String;ILandroid/app/Notification;)V
  351. .line 210
  352. return-void
  353. .end method
  354. .method public notify(Ljava/lang/String;ILandroid/app/Notification;)V
  355. .locals 2
  356. .param p1, "tag" # Ljava/lang/String;
  357. .param p2, "id" # I
  358. .param p3, "notification" # Landroid/app/Notification;
  359. .prologue
  360. .line 219
  361. invoke-static {p3}, Landroid/support/v4/app/NotificationManagerCompat;->useSideChannelForNotification(Landroid/app/Notification;)Z
  362. move-result v0
  363. if-eqz v0, :cond_0
  364. .line 220
  365. new-instance v0, Landroid/support/v4/app/NotificationManagerCompat$NotifyTask;
  366. iget-object v1, p0, Landroid/support/v4/app/NotificationManagerCompat;->mContext:Landroid/content/Context;
  367. invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
  368. move-result-object v1
  369. invoke-direct {v0, v1, p2, p1, p3}, Landroid/support/v4/app/NotificationManagerCompat$NotifyTask;-><init>(Ljava/lang/String;ILjava/lang/String;Landroid/app/Notification;)V
  370. invoke-direct {p0, v0}, Landroid/support/v4/app/NotificationManagerCompat;->pushSideChannelQueue(Landroid/support/v4/app/NotificationManagerCompat$Task;)V
  371. .line 223
  372. sget-object v0, Landroid/support/v4/app/NotificationManagerCompat;->IMPL:Landroid/support/v4/app/NotificationManagerCompat$Impl;
  373. iget-object v1, p0, Landroid/support/v4/app/NotificationManagerCompat;->mNotificationManager:Landroid/app/NotificationManager;
  374. invoke-interface {v0, v1, p1, p2}, Landroid/support/v4/app/NotificationManagerCompat$Impl;->cancelNotification(Landroid/app/NotificationManager;Ljava/lang/String;I)V
  375. .line 227
  376. :goto_0
  377. return-void
  378. .line 225
  379. :cond_0
  380. sget-object v0, Landroid/support/v4/app/NotificationManagerCompat;->IMPL:Landroid/support/v4/app/NotificationManagerCompat$Impl;
  381. iget-object v1, p0, Landroid/support/v4/app/NotificationManagerCompat;->mNotificationManager:Landroid/app/NotificationManager;
  382. invoke-interface {v0, v1, p1, p2, p3}, Landroid/support/v4/app/NotificationManagerCompat$Impl;->postNotification(Landroid/app/NotificationManager;Ljava/lang/String;ILandroid/app/Notification;)V
  383. goto :goto_0
  384. .end method