ContextCompat.smali 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760
  1. .class public Landroid/support/v4/content/ContextCompat;
  2. .super Ljava/lang/Object;
  3. .source "ContextCompat.java"
  4. # static fields
  5. .field private static final DIR_ANDROID:Ljava/lang/String; = "Android"
  6. .field private static final DIR_CACHE:Ljava/lang/String; = "cache"
  7. .field private static final DIR_DATA:Ljava/lang/String; = "data"
  8. .field private static final DIR_FILES:Ljava/lang/String; = "files"
  9. .field private static final DIR_OBB:Ljava/lang/String; = "obb"
  10. .field private static final TAG:Ljava/lang/String; = "ContextCompat"
  11. # direct methods
  12. .method public constructor <init>()V
  13. .locals 0
  14. .prologue
  15. .line 38
  16. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  17. return-void
  18. .end method
  19. .method private static varargs buildPath(Ljava/io/File;[Ljava/lang/String;)Ljava/io/File;
  20. .locals 6
  21. .param p0, "base" # Ljava/io/File;
  22. .param p1, "segments" # [Ljava/lang/String;
  23. .prologue
  24. .line 296
  25. move-object v1, p0
  26. .line 297
  27. .local v1, "cur":Ljava/io/File;
  28. move-object v0, p1
  29. .local v0, "arr$":[Ljava/lang/String;
  30. array-length v4, v0
  31. .local v4, "len$":I
  32. const/4 v3, 0x0
  33. .local v3, "i$":I
  34. move-object v2, v1
  35. .end local v1 # "cur":Ljava/io/File;
  36. .local v2, "cur":Ljava/io/File;
  37. :goto_0
  38. if-ge v3, v4, :cond_1
  39. aget-object v5, v0, v3
  40. .line 298
  41. .local v5, "segment":Ljava/lang/String;
  42. if-nez v2, :cond_0
  43. .line 299
  44. new-instance v1, Ljava/io/File;
  45. invoke-direct {v1, v5}, Ljava/io/File;-><init>(Ljava/lang/String;)V
  46. .line 297
  47. .end local v2 # "cur":Ljava/io/File;
  48. .restart local v1 # "cur":Ljava/io/File;
  49. :goto_1
  50. add-int/lit8 v3, v3, 0x1
  51. move-object v2, v1
  52. .end local v1 # "cur":Ljava/io/File;
  53. .restart local v2 # "cur":Ljava/io/File;
  54. goto :goto_0
  55. .line 300
  56. :cond_0
  57. if-eqz v5, :cond_2
  58. .line 301
  59. new-instance v1, Ljava/io/File;
  60. invoke-direct {v1, v2, v5}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
  61. .end local v2 # "cur":Ljava/io/File;
  62. .restart local v1 # "cur":Ljava/io/File;
  63. goto :goto_1
  64. .line 304
  65. .end local v1 # "cur":Ljava/io/File;
  66. .end local v5 # "segment":Ljava/lang/String;
  67. .restart local v2 # "cur":Ljava/io/File;
  68. :cond_1
  69. return-object v2
  70. .restart local v5 # "segment":Ljava/lang/String;
  71. :cond_2
  72. move-object v1, v2
  73. .end local v2 # "cur":Ljava/io/File;
  74. .restart local v1 # "cur":Ljava/io/File;
  75. goto :goto_1
  76. .end method
  77. .method public static checkSelfPermission(Landroid/content/Context;Ljava/lang/String;)I
  78. .locals 2
  79. .param p0, "context" # Landroid/content/Context;
  80. .annotation build Landroid/support/annotation/NonNull;
  81. .end annotation
  82. .end param
  83. .param p1, "permission" # Ljava/lang/String;
  84. .annotation build Landroid/support/annotation/NonNull;
  85. .end annotation
  86. .end param
  87. .prologue
  88. .line 383
  89. if-nez p1, :cond_0
  90. .line 384
  91. new-instance v0, Ljava/lang/IllegalArgumentException;
  92. const-string v1, "permission is null"
  93. invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
  94. throw v0
  95. .line 387
  96. :cond_0
  97. invoke-static {}, Landroid/os/Process;->myPid()I
  98. move-result v0
  99. invoke-static {}, Landroid/os/Process;->myUid()I
  100. move-result v1
  101. invoke-virtual {p0, p1, v0, v1}, Landroid/content/Context;->checkPermission(Ljava/lang/String;II)I
  102. move-result v0
  103. return v0
  104. .end method
  105. .method private static declared-synchronized createFilesDir(Ljava/io/File;)Ljava/io/File;
  106. .locals 4
  107. .param p0, "file" # Ljava/io/File;
  108. .prologue
  109. .line 442
  110. const-class v1, Landroid/support/v4/content/ContextCompat;
  111. monitor-enter v1
  112. :try_start_0
  113. invoke-virtual {p0}, Ljava/io/File;->exists()Z
  114. move-result v0
  115. if-nez v0, :cond_0
  116. .line 443
  117. invoke-virtual {p0}, Ljava/io/File;->mkdirs()Z
  118. move-result v0
  119. if-nez v0, :cond_0
  120. .line 444
  121. invoke-virtual {p0}, Ljava/io/File;->exists()Z
  122. :try_end_0
  123. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  124. move-result v0
  125. if-eqz v0, :cond_1
  126. .line 452
  127. .end local p0 # "file":Ljava/io/File;
  128. :cond_0
  129. :goto_0
  130. monitor-exit v1
  131. return-object p0
  132. .line 448
  133. .restart local p0 # "file":Ljava/io/File;
  134. :cond_1
  135. :try_start_1
  136. const-string v0, "ContextCompat"
  137. new-instance v2, Ljava/lang/StringBuilder;
  138. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  139. const-string v3, "Unable to create files subdir "
  140. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  141. move-result-object v2
  142. invoke-virtual {p0}, Ljava/io/File;->getPath()Ljava/lang/String;
  143. move-result-object v3
  144. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  145. move-result-object v2
  146. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  147. move-result-object v2
  148. invoke-static {v0, v2}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
  149. :try_end_1
  150. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  151. .line 449
  152. const/4 p0, 0x0
  153. goto :goto_0
  154. .line 442
  155. :catchall_0
  156. move-exception v0
  157. monitor-exit v1
  158. throw v0
  159. .end method
  160. .method public static getCodeCacheDir(Landroid/content/Context;)Ljava/io/File;
  161. .locals 5
  162. .param p0, "context" # Landroid/content/Context;
  163. .prologue
  164. .line 432
  165. sget v1, Landroid/os/Build$VERSION;->SDK_INT:I
  166. .line 433
  167. .local v1, "version":I
  168. const/16 v2, 0x15
  169. if-lt v1, v2, :cond_0
  170. .line 434
  171. invoke-static {p0}, Landroid/support/v4/content/ContextCompatApi21;->getCodeCacheDir(Landroid/content/Context;)Ljava/io/File;
  172. move-result-object v2
  173. .line 437
  174. :goto_0
  175. return-object v2
  176. .line 436
  177. :cond_0
  178. invoke-virtual {p0}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;
  179. move-result-object v0
  180. .line 437
  181. .local v0, "appInfo":Landroid/content/pm/ApplicationInfo;
  182. new-instance v2, Ljava/io/File;
  183. iget-object v3, v0, Landroid/content/pm/ApplicationInfo;->dataDir:Ljava/lang/String;
  184. const-string v4, "code_cache"
  185. invoke-direct {v2, v3, v4}, Ljava/io/File;-><init>(Ljava/lang/String;Ljava/lang/String;)V
  186. invoke-static {v2}, Landroid/support/v4/content/ContextCompat;->createFilesDir(Ljava/io/File;)Ljava/io/File;
  187. move-result-object v2
  188. goto :goto_0
  189. .end method
  190. .method public static final getColor(Landroid/content/Context;I)I
  191. .locals 2
  192. .param p0, "context" # Landroid/content/Context;
  193. .param p1, "id" # I
  194. .prologue
  195. .line 364
  196. sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
  197. .line 365
  198. .local v0, "version":I
  199. const/16 v1, 0x17
  200. if-lt v0, v1, :cond_0
  201. .line 366
  202. invoke-static {p0, p1}, Landroid/support/v4/content/ContextCompatApi23;->getColor(Landroid/content/Context;I)I
  203. move-result v1
  204. .line 368
  205. :goto_0
  206. return v1
  207. :cond_0
  208. invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
  209. move-result-object v1
  210. invoke-virtual {v1, p1}, Landroid/content/res/Resources;->getColor(I)I
  211. move-result v1
  212. goto :goto_0
  213. .end method
  214. .method public static final getColorStateList(Landroid/content/Context;I)Landroid/content/res/ColorStateList;
  215. .locals 2
  216. .param p0, "context" # Landroid/content/Context;
  217. .param p1, "id" # I
  218. .prologue
  219. .line 342
  220. sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
  221. .line 343
  222. .local v0, "version":I
  223. const/16 v1, 0x17
  224. if-lt v0, v1, :cond_0
  225. .line 344
  226. invoke-static {p0, p1}, Landroid/support/v4/content/ContextCompatApi23;->getColorStateList(Landroid/content/Context;I)Landroid/content/res/ColorStateList;
  227. move-result-object v1
  228. .line 346
  229. :goto_0
  230. return-object v1
  231. :cond_0
  232. invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
  233. move-result-object v1
  234. invoke-virtual {v1, p1}, Landroid/content/res/Resources;->getColorStateList(I)Landroid/content/res/ColorStateList;
  235. move-result-object v1
  236. goto :goto_0
  237. .end method
  238. .method public static final getDrawable(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable;
  239. .locals 2
  240. .param p0, "context" # Landroid/content/Context;
  241. .param p1, "id" # I
  242. .prologue
  243. .line 319
  244. sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
  245. .line 320
  246. .local v0, "version":I
  247. const/16 v1, 0x15
  248. if-lt v0, v1, :cond_0
  249. .line 321
  250. invoke-static {p0, p1}, Landroid/support/v4/content/ContextCompatApi21;->getDrawable(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable;
  251. move-result-object v1
  252. .line 323
  253. :goto_0
  254. return-object v1
  255. :cond_0
  256. invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
  257. move-result-object v1
  258. invoke-virtual {v1, p1}, Landroid/content/res/Resources;->getDrawable(I)Landroid/graphics/drawable/Drawable;
  259. move-result-object v1
  260. goto :goto_0
  261. .end method
  262. .method public static getExternalCacheDirs(Landroid/content/Context;)[Ljava/io/File;
  263. .locals 8
  264. .param p0, "context" # Landroid/content/Context;
  265. .prologue
  266. const/4 v7, 0x1
  267. const/4 v6, 0x0
  268. .line 280
  269. sget v1, Landroid/os/Build$VERSION;->SDK_INT:I
  270. .line 281
  271. .local v1, "version":I
  272. const/16 v2, 0x13
  273. if-lt v1, v2, :cond_0
  274. .line 282
  275. invoke-static {p0}, Landroid/support/v4/content/ContextCompatKitKat;->getExternalCacheDirs(Landroid/content/Context;)[Ljava/io/File;
  276. move-result-object v2
  277. .line 291
  278. :goto_0
  279. return-object v2
  280. .line 285
  281. :cond_0
  282. const/16 v2, 0x8
  283. if-lt v1, v2, :cond_1
  284. .line 286
  285. invoke-static {p0}, Landroid/support/v4/content/ContextCompatFroyo;->getExternalCacheDir(Landroid/content/Context;)Ljava/io/File;
  286. move-result-object v0
  287. .line 291
  288. .local v0, "single":Ljava/io/File;
  289. :goto_1
  290. new-array v2, v7, [Ljava/io/File;
  291. aput-object v0, v2, v6
  292. goto :goto_0
  293. .line 288
  294. .end local v0 # "single":Ljava/io/File;
  295. :cond_1
  296. invoke-static {}, Landroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File;
  297. move-result-object v2
  298. const/4 v3, 0x4
  299. new-array v3, v3, [Ljava/lang/String;
  300. const-string v4, "Android"
  301. aput-object v4, v3, v6
  302. const-string v4, "data"
  303. aput-object v4, v3, v7
  304. const/4 v4, 0x2
  305. invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
  306. move-result-object v5
  307. aput-object v5, v3, v4
  308. const/4 v4, 0x3
  309. const-string v5, "cache"
  310. aput-object v5, v3, v4
  311. invoke-static {v2, v3}, Landroid/support/v4/content/ContextCompat;->buildPath(Ljava/io/File;[Ljava/lang/String;)Ljava/io/File;
  312. move-result-object v0
  313. .restart local v0 # "single":Ljava/io/File;
  314. goto :goto_1
  315. .end method
  316. .method public static getExternalFilesDirs(Landroid/content/Context;Ljava/lang/String;)[Ljava/io/File;
  317. .locals 8
  318. .param p0, "context" # Landroid/content/Context;
  319. .param p1, "type" # Ljava/lang/String;
  320. .prologue
  321. const/4 v7, 0x1
  322. const/4 v6, 0x0
  323. .line 220
  324. sget v1, Landroid/os/Build$VERSION;->SDK_INT:I
  325. .line 221
  326. .local v1, "version":I
  327. const/16 v2, 0x13
  328. if-lt v1, v2, :cond_0
  329. .line 222
  330. invoke-static {p0, p1}, Landroid/support/v4/content/ContextCompatKitKat;->getExternalFilesDirs(Landroid/content/Context;Ljava/lang/String;)[Ljava/io/File;
  331. move-result-object v2
  332. .line 231
  333. :goto_0
  334. return-object v2
  335. .line 225
  336. :cond_0
  337. const/16 v2, 0x8
  338. if-lt v1, v2, :cond_1
  339. .line 226
  340. invoke-static {p0, p1}, Landroid/support/v4/content/ContextCompatFroyo;->getExternalFilesDir(Landroid/content/Context;Ljava/lang/String;)Ljava/io/File;
  341. move-result-object v0
  342. .line 231
  343. .local v0, "single":Ljava/io/File;
  344. :goto_1
  345. new-array v2, v7, [Ljava/io/File;
  346. aput-object v0, v2, v6
  347. goto :goto_0
  348. .line 228
  349. .end local v0 # "single":Ljava/io/File;
  350. :cond_1
  351. invoke-static {}, Landroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File;
  352. move-result-object v2
  353. const/4 v3, 0x5
  354. new-array v3, v3, [Ljava/lang/String;
  355. const-string v4, "Android"
  356. aput-object v4, v3, v6
  357. const-string v4, "data"
  358. aput-object v4, v3, v7
  359. const/4 v4, 0x2
  360. invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
  361. move-result-object v5
  362. aput-object v5, v3, v4
  363. const/4 v4, 0x3
  364. const-string v5, "files"
  365. aput-object v5, v3, v4
  366. const/4 v4, 0x4
  367. aput-object p1, v3, v4
  368. invoke-static {v2, v3}, Landroid/support/v4/content/ContextCompat;->buildPath(Ljava/io/File;[Ljava/lang/String;)Ljava/io/File;
  369. move-result-object v0
  370. .restart local v0 # "single":Ljava/io/File;
  371. goto :goto_1
  372. .end method
  373. .method public static getObbDirs(Landroid/content/Context;)[Ljava/io/File;
  374. .locals 8
  375. .param p0, "context" # Landroid/content/Context;
  376. .prologue
  377. const/4 v7, 0x1
  378. const/4 v6, 0x0
  379. .line 160
  380. sget v1, Landroid/os/Build$VERSION;->SDK_INT:I
  381. .line 161
  382. .local v1, "version":I
  383. const/16 v2, 0x13
  384. if-lt v1, v2, :cond_0
  385. .line 162
  386. invoke-static {p0}, Landroid/support/v4/content/ContextCompatKitKat;->getObbDirs(Landroid/content/Context;)[Ljava/io/File;
  387. move-result-object v2
  388. .line 171
  389. :goto_0
  390. return-object v2
  391. .line 165
  392. :cond_0
  393. const/16 v2, 0xb
  394. if-lt v1, v2, :cond_1
  395. .line 166
  396. invoke-static {p0}, Landroid/support/v4/content/ContextCompatHoneycomb;->getObbDir(Landroid/content/Context;)Ljava/io/File;
  397. move-result-object v0
  398. .line 171
  399. .local v0, "single":Ljava/io/File;
  400. :goto_1
  401. new-array v2, v7, [Ljava/io/File;
  402. aput-object v0, v2, v6
  403. goto :goto_0
  404. .line 168
  405. .end local v0 # "single":Ljava/io/File;
  406. :cond_1
  407. invoke-static {}, Landroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File;
  408. move-result-object v2
  409. const/4 v3, 0x3
  410. new-array v3, v3, [Ljava/lang/String;
  411. const-string v4, "Android"
  412. aput-object v4, v3, v6
  413. const-string v4, "obb"
  414. aput-object v4, v3, v7
  415. const/4 v4, 0x2
  416. invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
  417. move-result-object v5
  418. aput-object v5, v3, v4
  419. invoke-static {v2, v3}, Landroid/support/v4/content/ContextCompat;->buildPath(Ljava/io/File;[Ljava/lang/String;)Ljava/io/File;
  420. move-result-object v0
  421. .restart local v0 # "single":Ljava/io/File;
  422. goto :goto_1
  423. .end method
  424. .method public static startActivities(Landroid/content/Context;[Landroid/content/Intent;)Z
  425. .locals 1
  426. .param p0, "context" # Landroid/content/Context;
  427. .param p1, "intents" # [Landroid/content/Intent;
  428. .prologue
  429. .line 73
  430. const/4 v0, 0x0
  431. invoke-static {p0, p1, v0}, Landroid/support/v4/content/ContextCompat;->startActivities(Landroid/content/Context;[Landroid/content/Intent;Landroid/os/Bundle;)Z
  432. move-result v0
  433. return v0
  434. .end method
  435. .method public static startActivities(Landroid/content/Context;[Landroid/content/Intent;Landroid/os/Bundle;)Z
  436. .locals 3
  437. .param p0, "context" # Landroid/content/Context;
  438. .param p1, "intents" # [Landroid/content/Intent;
  439. .param p2, "options" # Landroid/os/Bundle;
  440. .prologue
  441. const/4 v1, 0x1
  442. .line 105
  443. sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
  444. .line 106
  445. .local v0, "version":I
  446. const/16 v2, 0x10
  447. if-lt v0, v2, :cond_0
  448. .line 107
  449. invoke-static {p0, p1, p2}, Landroid/support/v4/content/ContextCompatJellybean;->startActivities(Landroid/content/Context;[Landroid/content/Intent;Landroid/os/Bundle;)V
  450. .line 113
  451. :goto_0
  452. return v1
  453. .line 109
  454. :cond_0
  455. const/16 v2, 0xb
  456. if-lt v0, v2, :cond_1
  457. .line 110
  458. invoke-static {p0, p1}, Landroid/support/v4/content/ContextCompatHoneycomb;->startActivities(Landroid/content/Context;[Landroid/content/Intent;)V
  459. goto :goto_0
  460. .line 113
  461. :cond_1
  462. const/4 v1, 0x0
  463. goto :goto_0
  464. .end method
  465. # virtual methods
  466. .method public final getNoBackupFilesDir(Landroid/content/Context;)Ljava/io/File;
  467. .locals 5
  468. .param p1, "context" # Landroid/content/Context;
  469. .prologue
  470. .line 407
  471. sget v1, Landroid/os/Build$VERSION;->SDK_INT:I
  472. .line 408
  473. .local v1, "version":I
  474. const/16 v2, 0x15
  475. if-lt v1, v2, :cond_0
  476. .line 409
  477. invoke-static {p1}, Landroid/support/v4/content/ContextCompatApi21;->getNoBackupFilesDir(Landroid/content/Context;)Ljava/io/File;
  478. move-result-object v2
  479. .line 412
  480. :goto_0
  481. return-object v2
  482. .line 411
  483. :cond_0
  484. invoke-virtual {p1}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;
  485. move-result-object v0
  486. .line 412
  487. .local v0, "appInfo":Landroid/content/pm/ApplicationInfo;
  488. new-instance v2, Ljava/io/File;
  489. iget-object v3, v0, Landroid/content/pm/ApplicationInfo;->dataDir:Ljava/lang/String;
  490. const-string v4, "no_backup"
  491. invoke-direct {v2, v3, v4}, Ljava/io/File;-><init>(Ljava/lang/String;Ljava/lang/String;)V
  492. invoke-static {v2}, Landroid/support/v4/content/ContextCompat;->createFilesDir(Ljava/io/File;)Ljava/io/File;
  493. move-result-object v2
  494. goto :goto_0
  495. .end method