· 7 years ago · Feb 23, 2019, 09:46 AM
1.class public Lcom/android/providers/media/MediaProvider;
2.super Landroid/content/ContentProvider;
3.source "MediaProvider.java"
4
5
6# annotations
7.annotation system Ldalvik/annotation/MemberClasses;
8 value = {
9 Lcom/android/providers/media/MediaProvider$ThumbData;,
10 Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;,
11 Lcom/android/providers/media/MediaProvider$DatabaseHelper;
12 }
13.end annotation
14
15
16# static fields
17.field private static final ALBUMART_URI:Landroid/net/Uri;
18
19.field public static DEBUG:Z
20
21.field private static final GENRE_LOOKUP_PROJECTION:[Ljava/lang/String;
22
23.field private static final ID_PROJECTION:[Ljava/lang/String;
24
25.field private static final MEDIA_URI:Landroid/net/Uri;
26
27.field private static final MIME_TYPE_PROJECTION:[Ljava/lang/String;
28
29.field private static final PATH_PROJECTION:[Ljava/lang/String;
30
31.field private static final READY_FLAG_PROJECTION:[Ljava/lang/String;
32
33.field private static TAG:Ljava/lang/String;
34
35.field private static final URI_MATCHER:Landroid/content/UriMatcher;
36
37.field private static mExternalStoragePaths:[Ljava/lang/String;
38
39.field private static mExternalStoragePaths_for_upgrade:[Ljava/lang/String;
40
41.field private static final mMediaTableColumns:[Ljava/lang/String;
42
43.field private static mStaticDirectoryCache:Ljava/util/HashMap;
44 .annotation system Ldalvik/annotation/Signature;
45 value = {
46 "Ljava/util/HashMap",
47 "<",
48 "Ljava/lang/String;",
49 "Ljava/lang/Long;",
50 ">;"
51 }
52 .end annotation
53.end field
54
55.field private static final openFileColumns:[Ljava/lang/String;
56
57.field private static final sArtistAlbumsMap:Ljava/util/HashMap;
58 .annotation system Ldalvik/annotation/Signature;
59 value = {
60 "Ljava/util/HashMap",
61 "<",
62 "Ljava/lang/String;",
63 "Ljava/lang/String;",
64 ">;"
65 }
66 .end annotation
67.end field
68
69.field private static final sDefaultFolderNames:[Ljava/lang/String;
70
71.field private static final sFolderArtMap:Ljava/util/HashMap;
72 .annotation system Ldalvik/annotation/Signature;
73 value = {
74 "Ljava/util/HashMap",
75 "<",
76 "Ljava/lang/String;",
77 "Ljava/lang/String;",
78 ">;"
79 }
80 .end annotation
81.end field
82
83.field static final sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
84
85.field private static final sIdOnlyColumn:[Ljava/lang/String;
86
87
88# instance fields
89.field private final SEARCH_COLUMN_BASIC_TEXT2:I
90
91.field private isShuttingDown:Z
92
93.field private mAlbumArtBaseUri:Landroid/net/Uri;
94
95.field private mCaseInsensitivePaths:Z
96
97.field private mCurrentThumbRequest:Lcom/android/providers/media/MediaThumbRequest;
98
99.field private mDatabases:Ljava/util/HashMap;
100 .annotation system Ldalvik/annotation/Signature;
101 value = {
102 "Ljava/util/HashMap",
103 "<",
104 "Ljava/lang/String;",
105 "Lcom/android/providers/media/MediaProvider$DatabaseHelper;",
106 ">;"
107 }
108 .end annotation
109.end field
110
111.field mDirectoryCache:Ljava/util/HashMap;
112 .annotation system Ldalvik/annotation/Signature;
113 value = {
114 "Ljava/util/HashMap",
115 "<",
116 "Ljava/lang/String;",
117 "Ljava/lang/Long;",
118 ">;"
119 }
120 .end annotation
121.end field
122
123.field private mDisableMtpObjectCallbacks:Z
124
125.field private mMediaScannerVolume:Ljava/lang/String;
126
127.field private mMediaThumbQueue:Ljava/util/PriorityQueue;
128 .annotation system Ldalvik/annotation/Signature;
129 value = {
130 "Ljava/util/PriorityQueue",
131 "<",
132 "Lcom/android/providers/media/MediaThumbRequest;",
133 ">;"
134 }
135 .end annotation
136.end field
137
138.field private mMtpService:Lcom/android/providers/media/IMtpService;
139
140.field private final mMtpServiceConnection:Landroid/content/ServiceConnection;
141
142.field private final mObjectRemovedCallback:Landroid/database/sqlite/SQLiteDatabase$CustomFunction;
143
144.field private mPendingThumbs:Ljava/util/HashSet;
145
146.field private mSearchColsBasic:[Ljava/lang/String;
147
148.field private mSearchColsFancy:[Ljava/lang/String;
149
150.field private mSearchColsLegacy:[Ljava/lang/String;
151
152.field private mShutdownReceiver:Landroid/content/BroadcastReceiver;
153
154.field private mThumbHandler:Landroid/os/Handler;
155
156.field private mThumbRequestStack:Ljava/util/Stack;
157
158.field private mUnmountReceiver:Landroid/content/BroadcastReceiver;
159
160.field private mVolumeId:I
161
162
163# direct methods
164.method static constructor <clinit>()V
165 .locals 8
166
167 .prologue
168 const/4 v7, 0x4
169
170 const/4 v6, 0x3
171
172 const/4 v5, 0x2
173
174 const/4 v4, 0x0
175
176 const/4 v1, 0x1
177
178 .line 99
179 const-string v0, "content://media"
180
181 invoke-static {v0}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
182
183 move-result-object v0
184
185 sput-object v0, Lcom/android/providers/media/MediaProvider;->MEDIA_URI:Landroid/net/Uri;
186
187 .line 100
188 const-string v0, "content://media/external/audio/albumart"
189
190 invoke-static {v0}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
191
192 move-result-object v0
193
194 sput-object v0, Lcom/android/providers/media/MediaProvider;->ALBUMART_URI:Landroid/net/Uri;
195
196 .line 104
197 new-instance v0, Ljava/util/HashMap;
198
199 invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
200
201 sput-object v0, Lcom/android/providers/media/MediaProvider;->sArtistAlbumsMap:Ljava/util/HashMap;
202
203 .line 105
204 new-instance v0, Ljava/util/HashMap;
205
206 invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
207
208 sput-object v0, Lcom/android/providers/media/MediaProvider;->sFolderArtMap:Ljava/util/HashMap;
209
210 .line 111
211 new-instance v0, Ljava/util/HashMap;
212
213 invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
214
215 sput-object v0, Lcom/android/providers/media/MediaProvider;->mStaticDirectoryCache:Ljava/util/HashMap;
216
217 .line 127
218 new-array v0, v5, [Ljava/lang/String;
219
220 const-string v2, "/mnt/sdcard"
221
222 aput-object v2, v0, v4
223
224 const-string v2, "/mnt/sdcard_ext"
225
226 aput-object v2, v0, v4
227
228 sput-object v0, Lcom/android/providers/media/MediaProvider;->mExternalStoragePaths_for_upgrade:[Ljava/lang/String;
229
230 .line 178
231 new-array v0, v5, [Ljava/lang/String;
232
233 const-string v2, "_id"
234
235 aput-object v2, v0, v4
236
237 const-string v2, "media_type"
238
239 aput-object v2, v0, v1
240
241 sput-object v0, Lcom/android/providers/media/MediaProvider;->mMediaTableColumns:[Ljava/lang/String;
242
243 .line 183
244 new-array v0, v1, [Ljava/lang/String;
245
246 const-string v2, "_id"
247
248 aput-object v2, v0, v4
249
250 sput-object v0, Lcom/android/providers/media/MediaProvider;->sIdOnlyColumn:[Ljava/lang/String;
251
252 .line 466
253 const/16 v0, 0x9
254
255 new-array v0, v0, [Ljava/lang/String;
256
257 sget-object v2, Landroid/os/Environment;->DIRECTORY_MUSIC:Ljava/lang/String;
258
259 aput-object v2, v0, v4
260
261 sget-object v2, Landroid/os/Environment;->DIRECTORY_PODCASTS:Ljava/lang/String;
262
263 aput-object v2, v0, v1
264
265 sget-object v2, Landroid/os/Environment;->DIRECTORY_RINGTONES:Ljava/lang/String;
266
267 aput-object v2, v0, v5
268
269 sget-object v2, Landroid/os/Environment;->DIRECTORY_ALARMS:Ljava/lang/String;
270
271 aput-object v2, v0, v6
272
273 sget-object v2, Landroid/os/Environment;->DIRECTORY_NOTIFICATIONS:Ljava/lang/String;
274
275 aput-object v2, v0, v7
276
277 const/4 v2, 0x5
278
279 sget-object v3, Landroid/os/Environment;->DIRECTORY_PICTURES:Ljava/lang/String;
280
281 aput-object v3, v0, v2
282
283 const/4 v2, 0x6
284
285 sget-object v3, Landroid/os/Environment;->DIRECTORY_MOVIES:Ljava/lang/String;
286
287 aput-object v3, v0, v2
288
289 const/4 v2, 0x7
290
291 sget-object v3, Landroid/os/Environment;->DIRECTORY_DOWNLOADS:Ljava/lang/String;
292
293 aput-object v3, v0, v2
294
295 const/16 v2, 0x8
296
297 sget-object v3, Landroid/os/Environment;->DIRECTORY_DCIM:Ljava/lang/String;
298
299 aput-object v3, v0, v2
300
301 sput-object v0, Lcom/android/providers/media/MediaProvider;->sDefaultFolderNames:[Ljava/lang/String;
302
303 .line 3068
304 new-array v0, v5, [Ljava/lang/String;
305
306 const-string v2, "_id"
307
308 aput-object v2, v0, v4
309
310 const-string v2, "name"
311
312 aput-object v2, v0, v1
313
314 sput-object v0, Lcom/android/providers/media/MediaProvider;->GENRE_LOOKUP_PROJECTION:[Ljava/lang/String;
315
316 .line 3403
317 new-instance v0, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
318
319 const/4 v2, 0x0
320
321 invoke-direct {v0, v2}, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;-><init>(Lcom/android/providers/media/MediaProvider$1;)V
322
323 sput-object v0, Lcom/android/providers/media/MediaProvider;->sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
324
325 .line 3892
326 new-array v0, v1, [Ljava/lang/String;
327
328 const-string v2, "_data"
329
330 aput-object v2, v0, v4
331
332 sput-object v0, Lcom/android/providers/media/MediaProvider;->openFileColumns:[Ljava/lang/String;
333
334 .line 4626
335 const-string v0, "MediaProvider"
336
337 sput-object v0, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
338
339 .line 4628
340 sget-object v0, Landroid/os/Build;->TYPE:Ljava/lang/String;
341
342 const-string v2, "user"
343
344 invoke-virtual {v0, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
345
346 move-result v0
347
348 if-eqz v0, :cond_0
349
350 sget-object v0, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
351
352 invoke-static {v0, v6}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z
353
354 move-result v0
355
356 :goto_0
357 sput-boolean v0, Lcom/android/providers/media/MediaProvider;->DEBUG:Z
358
359 .line 4718
360 new-instance v0, Landroid/content/UriMatcher;
361
362 const/4 v2, -0x1
363
364 invoke-direct {v0, v2}, Landroid/content/UriMatcher;-><init>(I)V
365
366 sput-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
367
368 .line 4721
369 new-array v0, v1, [Ljava/lang/String;
370
371 const-string v2, "_id"
372
373 aput-object v2, v0, v4
374
375 sput-object v0, Lcom/android/providers/media/MediaProvider;->ID_PROJECTION:[Ljava/lang/String;
376
377 .line 4725
378 new-array v0, v5, [Ljava/lang/String;
379
380 const-string v2, "_id"
381
382 aput-object v2, v0, v4
383
384 const-string v2, "_data"
385
386 aput-object v2, v0, v1
387
388 sput-object v0, Lcom/android/providers/media/MediaProvider;->PATH_PROJECTION:[Ljava/lang/String;
389
390 .line 4730
391 new-array v0, v5, [Ljava/lang/String;
392
393 const-string v2, "_id"
394
395 aput-object v2, v0, v4
396
397 const-string v2, "mime_type"
398
399 aput-object v2, v0, v1
400
401 sput-object v0, Lcom/android/providers/media/MediaProvider;->MIME_TYPE_PROJECTION:[Ljava/lang/String;
402
403 .line 4735
404 new-array v0, v6, [Ljava/lang/String;
405
406 const-string v2, "_id"
407
408 aput-object v2, v0, v4
409
410 const-string v2, "_data"
411
412 aput-object v2, v0, v1
413
414 const-string v2, "mini_thumb_magic"
415
416 aput-object v2, v0, v5
417
418 sput-object v0, Lcom/android/providers/media/MediaProvider;->READY_FLAG_PROJECTION:[Ljava/lang/String;
419
420 .line 4748
421 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
422
423 const-string v2, "media"
424
425 const-string v3, "*/images/media"
426
427 invoke-virtual {v0, v2, v3, v1}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
428
429 .line 4749
430 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
431
432 const-string v1, "media"
433
434 const-string v2, "*/images/media/#"
435
436 invoke-virtual {v0, v1, v2, v5}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
437
438 .line 4750
439 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
440
441 const-string v1, "media"
442
443 const-string v2, "*/images/thumbnails"
444
445 invoke-virtual {v0, v1, v2, v6}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
446
447 .line 4751
448 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
449
450 const-string v1, "media"
451
452 const-string v2, "*/images/thumbnails/#"
453
454 invoke-virtual {v0, v1, v2, v7}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
455
456 .line 4753
457 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
458
459 const-string v1, "media"
460
461 const-string v2, "*/audio/media"
462
463 const/16 v3, 0x64
464
465 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
466
467 .line 4754
468 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
469
470 const-string v1, "media"
471
472 const-string v2, "*/audio/media/#"
473
474 const/16 v3, 0x65
475
476 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
477
478 .line 4755
479 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
480
481 const-string v1, "media"
482
483 const-string v2, "*/audio/media/#/genres"
484
485 const/16 v3, 0x66
486
487 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
488
489 .line 4756
490 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
491
492 const-string v1, "media"
493
494 const-string v2, "*/audio/media/#/genres/#"
495
496 const/16 v3, 0x67
497
498 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
499
500 .line 4757
501 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
502
503 const-string v1, "media"
504
505 const-string v2, "*/audio/media/#/playlists"
506
507 const/16 v3, 0x68
508
509 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
510
511 .line 4758
512 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
513
514 const-string v1, "media"
515
516 const-string v2, "*/audio/media/#/playlists/#"
517
518 const/16 v3, 0x69
519
520 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
521
522 .line 4759
523 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
524
525 const-string v1, "media"
526
527 const-string v2, "*/audio/genres"
528
529 const/16 v3, 0x6a
530
531 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
532
533 .line 4760
534 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
535
536 const-string v1, "media"
537
538 const-string v2, "*/audio/genres/#"
539
540 const/16 v3, 0x6b
541
542 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
543
544 .line 4761
545 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
546
547 const-string v1, "media"
548
549 const-string v2, "*/audio/genres/#/members"
550
551 const/16 v3, 0x6c
552
553 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
554
555 .line 4762
556 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
557
558 const-string v1, "media"
559
560 const-string v2, "*/audio/genres/all/members"
561
562 const/16 v3, 0x6d
563
564 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
565
566 .line 4763
567 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
568
569 const-string v1, "media"
570
571 const-string v2, "*/audio/playlists"
572
573 const/16 v3, 0x6e
574
575 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
576
577 .line 4764
578 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
579
580 const-string v1, "media"
581
582 const-string v2, "*/audio/playlists/#"
583
584 const/16 v3, 0x6f
585
586 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
587
588 .line 4765
589 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
590
591 const-string v1, "media"
592
593 const-string v2, "*/audio/playlists/#/members"
594
595 const/16 v3, 0x70
596
597 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
598
599 .line 4766
600 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
601
602 const-string v1, "media"
603
604 const-string v2, "*/audio/playlists/#/members/#"
605
606 const/16 v3, 0x71
607
608 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
609
610 .line 4767
611 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
612
613 const-string v1, "media"
614
615 const-string v2, "*/audio/artists"
616
617 const/16 v3, 0x72
618
619 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
620
621 .line 4768
622 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
623
624 const-string v1, "media"
625
626 const-string v2, "*/audio/artists/#"
627
628 const/16 v3, 0x73
629
630 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
631
632 .line 4769
633 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
634
635 const-string v1, "media"
636
637 const-string v2, "*/audio/artists/#/albums"
638
639 const/16 v3, 0x76
640
641 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
642
643 .line 4770
644 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
645
646 const-string v1, "media"
647
648 const-string v2, "*/audio/albums"
649
650 const/16 v3, 0x74
651
652 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
653
654 .line 4771
655 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
656
657 const-string v1, "media"
658
659 const-string v2, "*/audio/albums/#"
660
661 const/16 v3, 0x75
662
663 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
664
665 .line 4772
666 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
667
668 const-string v1, "media"
669
670 const-string v2, "*/audio/albumart"
671
672 const/16 v3, 0x77
673
674 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
675
676 .line 4773
677 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
678
679 const-string v1, "media"
680
681 const-string v2, "*/audio/albumart/#"
682
683 const/16 v3, 0x78
684
685 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
686
687 .line 4774
688 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
689
690 const-string v1, "media"
691
692 const-string v2, "*/audio/media/#/albumart"
693
694 const/16 v3, 0x79
695
696 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
697
698 .line 4776
699 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
700
701 const-string v1, "media"
702
703 const-string v2, "*/video/media"
704
705 const/16 v3, 0xc8
706
707 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
708
709 .line 4777
710 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
711
712 const-string v1, "media"
713
714 const-string v2, "*/video/media/#"
715
716 const/16 v3, 0xc9
717
718 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
719
720 .line 4778
721 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
722
723 const-string v1, "media"
724
725 const-string v2, "*/video/thumbnails"
726
727 const/16 v3, 0xca
728
729 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
730
731 .line 4779
732 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
733
734 const-string v1, "media"
735
736 const-string v2, "*/video/thumbnails/#"
737
738 const/16 v3, 0xcb
739
740 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
741
742 .line 4781
743 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
744
745 const-string v1, "media"
746
747 const-string v2, "*/media_scanner"
748
749 const/16 v3, 0x1f4
750
751 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
752
753 .line 4783
754 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
755
756 const-string v1, "media"
757
758 const-string v2, "*/fs_id"
759
760 const/16 v3, 0x258
761
762 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
763
764 .line 4784
765 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
766
767 const-string v1, "media"
768
769 const-string v2, "*/version"
770
771 const/16 v3, 0x259
772
773 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
774
775 .line 4786
776 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
777
778 const-string v1, "media"
779
780 const-string v2, "*/mtp_connected"
781
782 const/16 v3, 0x2c1
783
784 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
785
786 .line 4788
787 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
788
789 const-string v1, "media"
790
791 const-string v2, "*"
792
793 const/16 v3, 0x12d
794
795 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
796
797 .line 4789
798 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
799
800 const-string v1, "media"
801
802 const/4 v2, 0x0
803
804 const/16 v3, 0x12c
805
806 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
807
808 .line 4792
809 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
810
811 const-string v1, "media"
812
813 const-string v2, "*/file"
814
815 const/16 v3, 0x2bc
816
817 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
818
819 .line 4793
820 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
821
822 const-string v1, "media"
823
824 const-string v2, "*/file/#"
825
826 const/16 v3, 0x2bd
827
828 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
829
830 .line 4794
831 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
832
833 const-string v1, "media"
834
835 const-string v2, "*/object"
836
837 const/16 v3, 0x2be
838
839 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
840
841 .line 4795
842 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
843
844 const-string v1, "media"
845
846 const-string v2, "*/object/#"
847
848 const/16 v3, 0x2bf
849
850 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
851
852 .line 4796
853 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
854
855 const-string v1, "media"
856
857 const-string v2, "*/object/#/references"
858
859 const/16 v3, 0x2c0
860
861 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
862
863 .line 4801
864 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
865
866 const-string v1, "media"
867
868 const-string v2, "*/audio/search_suggest_query"
869
870 const/16 v3, 0x190
871
872 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
873
874 .line 4803
875 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
876
877 const-string v1, "media"
878
879 const-string v2, "*/audio/search_suggest_query/*"
880
881 const/16 v3, 0x190
882
883 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
884
885 .line 4807
886 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
887
888 const-string v1, "media"
889
890 const-string v2, "*/audio/search/search_suggest_query"
891
892 const/16 v3, 0x191
893
894 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
895
896 .line 4809
897 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
898
899 const-string v1, "media"
900
901 const-string v2, "*/audio/search/search_suggest_query/*"
902
903 const/16 v3, 0x191
904
905 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
906
907 .line 4813
908 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
909
910 const-string v1, "media"
911
912 const-string v2, "*/audio/search/fancy"
913
914 const/16 v3, 0x192
915
916 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
917
918 .line 4814
919 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
920
921 const-string v1, "media"
922
923 const-string v2, "*/audio/search/fancy/*"
924
925 const/16 v3, 0x192
926
927 invoke-virtual {v0, v1, v2, v3}, Landroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
928
929 .line 4815
930 return-void
931
932 :cond_0
933 move v0, v1
934
935 .line 4628
936 goto/16 :goto_0
937.end method
938
939.method public constructor <init>()V
940 .locals 8
941
942 .prologue
943 const/4 v7, 0x3
944
945 const/4 v6, 0x2
946
947 const/4 v5, 0x1
948
949 const/4 v4, 0x5
950
951 const/4 v3, 0x0
952
953 .line 97
954 invoke-direct {p0}, Landroid/content/ContentProvider;-><init>()V
955
956 .line 108
957 new-instance v0, Ljava/util/HashMap;
958
959 invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
960
961 iput-object v0, p0, Lcom/android/providers/media/MediaProvider;->mDirectoryCache:Ljava/util/HashMap;
962
963 .line 114
964 new-instance v0, Ljava/util/HashSet;
965
966 invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
967
968 iput-object v0, p0, Lcom/android/providers/media/MediaProvider;->mPendingThumbs:Ljava/util/HashSet;
969
970 .line 117
971 new-instance v0, Ljava/util/Stack;
972
973 invoke-direct {v0}, Ljava/util/Stack;-><init>()V
974
975 iput-object v0, p0, Lcom/android/providers/media/MediaProvider;->mThumbRequestStack:Ljava/util/Stack;
976
977 .line 120
978 const/4 v0, 0x0
979
980 iput-object v0, p0, Lcom/android/providers/media/MediaProvider;->mCurrentThumbRequest:Lcom/android/providers/media/MediaThumbRequest;
981
982 .line 121
983 new-instance v0, Ljava/util/PriorityQueue;
984
985 const/16 v1, 0xa
986
987 invoke-static {}, Lcom/android/providers/media/MediaThumbRequest;->getComparator()Ljava/util/Comparator;
988
989 move-result-object v2
990
991 invoke-direct {v0, v1, v2}, Ljava/util/PriorityQueue;-><init>(ILjava/util/Comparator;)V
992
993 iput-object v0, p0, Lcom/android/providers/media/MediaProvider;->mMediaThumbQueue:Ljava/util/PriorityQueue;
994
995 .line 131
996 const/16 v0, 0xc
997
998 new-array v0, v0, [Ljava/lang/String;
999
1000 const-string v1, "_id"
1001
1002 aput-object v1, v0, v3
1003
1004 const-string v1, "mime_type"
1005
1006 aput-object v1, v0, v5
1007
1008 const-string v1, "(CASE WHEN grouporder=1 THEN 2130837505 ELSE CASE WHEN grouporder=2 THEN 2130837504 ELSE 2130837506 END END) AS suggest_icon_1"
1009
1010 aput-object v1, v0, v6
1011
1012 const-string v1, "0 AS suggest_icon_2"
1013
1014 aput-object v1, v0, v7
1015
1016 const/4 v1, 0x4
1017
1018 const-string v2, "text1 AS suggest_text_1"
1019
1020 aput-object v2, v0, v1
1021
1022 const-string v1, "text1 AS suggest_intent_query"
1023
1024 aput-object v1, v0, v4
1025
1026 const/4 v1, 0x6
1027
1028 const-string v2, "CASE when grouporder=1 THEN data1 ELSE artist END AS data1"
1029
1030 aput-object v2, v0, v1
1031
1032 const/4 v1, 0x7
1033
1034 const-string v2, "CASE when grouporder=1 THEN data2 ELSE CASE WHEN grouporder=2 THEN NULL ELSE album END END AS data2"
1035
1036 aput-object v2, v0, v1
1037
1038 const/16 v1, 0x8
1039
1040 const-string v2, "match as ar"
1041
1042 aput-object v2, v0, v1
1043
1044 const/16 v1, 0x9
1045
1046 const-string v2, "suggest_intent_data"
1047
1048 aput-object v2, v0, v1
1049
1050 const/16 v1, 0xa
1051
1052 const-string v2, "grouporder"
1053
1054 aput-object v2, v0, v1
1055
1056 const/16 v1, 0xb
1057
1058 const-string v2, "NULL AS itemorder"
1059
1060 aput-object v2, v0, v1
1061
1062 iput-object v0, p0, Lcom/android/providers/media/MediaProvider;->mSearchColsLegacy:[Ljava/lang/String;
1063
1064 .line 150
1065 const/4 v0, 0x7
1066
1067 new-array v0, v0, [Ljava/lang/String;
1068
1069 const-string v1, "_id"
1070
1071 aput-object v1, v0, v3
1072
1073 const-string v1, "mime_type"
1074
1075 aput-object v1, v0, v5
1076
1077 const-string v1, "artist"
1078
1079 aput-object v1, v0, v6
1080
1081 const-string v1, "album"
1082
1083 aput-object v1, v0, v7
1084
1085 const/4 v1, 0x4
1086
1087 const-string v2, "title"
1088
1089 aput-object v2, v0, v1
1090
1091 const-string v1, "data1"
1092
1093 aput-object v1, v0, v4
1094
1095 const/4 v1, 0x6
1096
1097 const-string v2, "data2"
1098
1099 aput-object v2, v0, v1
1100
1101 iput-object v0, p0, Lcom/android/providers/media/MediaProvider;->mSearchColsFancy:[Ljava/lang/String;
1102
1103 .line 160
1104 const/4 v0, 0x7
1105
1106 new-array v0, v0, [Ljava/lang/String;
1107
1108 const-string v1, "_id"
1109
1110 aput-object v1, v0, v3
1111
1112 const-string v1, "mime_type"
1113
1114 aput-object v1, v0, v5
1115
1116 const-string v1, "(CASE WHEN grouporder=1 THEN 2130837505 ELSE CASE WHEN grouporder=2 THEN 2130837504 ELSE 2130837506 END END) AS suggest_icon_1"
1117
1118 aput-object v1, v0, v6
1119
1120 const-string v1, "text1 AS suggest_text_1"
1121
1122 aput-object v1, v0, v7
1123
1124 const/4 v1, 0x4
1125
1126 const-string v2, "text1 AS suggest_intent_query"
1127
1128 aput-object v2, v0, v1
1129
1130 const-string v1, "(CASE WHEN grouporder=1 THEN \'%1\' ELSE CASE WHEN grouporder=3 THEN artist || \' - \' || album ELSE CASE WHEN text2!=\'<unknown>\' THEN text2 ELSE NULL END END END) AS suggest_text_2"
1131
1132 aput-object v1, v0, v4
1133
1134 const/4 v1, 0x6
1135
1136 const-string v2, "suggest_intent_data"
1137
1138 aput-object v2, v0, v1
1139
1140 iput-object v0, p0, Lcom/android/providers/media/MediaProvider;->mSearchColsBasic:[Ljava/lang/String;
1141
1142 .line 176
1143 iput v4, p0, Lcom/android/providers/media/MediaProvider;->SEARCH_COLUMN_BASIC_TEXT2:I
1144
1145 .line 187
1146 const-string v0, "content://media/external/audio/albumart"
1147
1148 invoke-static {v0}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
1149
1150 move-result-object v0
1151
1152 iput-object v0, p0, Lcom/android/providers/media/MediaProvider;->mAlbumArtBaseUri:Landroid/net/Uri;
1153
1154 .line 189
1155 iput-boolean v3, p0, Lcom/android/providers/media/MediaProvider;->isShuttingDown:Z
1156
1157 .line 190
1158 new-instance v0, Lcom/android/providers/media/MediaProvider$1;
1159
1160 invoke-direct {v0, p0}, Lcom/android/providers/media/MediaProvider$1;-><init>(Lcom/android/providers/media/MediaProvider;)V
1161
1162 iput-object v0, p0, Lcom/android/providers/media/MediaProvider;->mShutdownReceiver:Landroid/content/BroadcastReceiver;
1163
1164 .line 200
1165 new-instance v0, Lcom/android/providers/media/MediaProvider$2;
1166
1167 invoke-direct {v0, p0}, Lcom/android/providers/media/MediaProvider$2;-><init>(Lcom/android/providers/media/MediaProvider;)V
1168
1169 iput-object v0, p0, Lcom/android/providers/media/MediaProvider;->mUnmountReceiver:Landroid/content/BroadcastReceiver;
1170
1171 .line 272
1172 new-instance v0, Lcom/android/providers/media/MediaProvider$3;
1173
1174 invoke-direct {v0, p0}, Lcom/android/providers/media/MediaProvider$3;-><init>(Lcom/android/providers/media/MediaProvider;)V
1175
1176 iput-object v0, p0, Lcom/android/providers/media/MediaProvider;->mObjectRemovedCallback:Landroid/database/sqlite/SQLiteDatabase$CustomFunction;
1177
1178 .line 452
1179 new-instance v0, Lcom/android/providers/media/MediaProvider$4;
1180
1181 invoke-direct {v0, p0}, Lcom/android/providers/media/MediaProvider$4;-><init>(Lcom/android/providers/media/MediaProvider;)V
1182
1183 iput-object v0, p0, Lcom/android/providers/media/MediaProvider;->mMtpServiceConnection:Landroid/content/ServiceConnection;
1184
1185 .line 4650
1186 const/4 v0, -0x1
1187
1188 iput v0, p0, Lcom/android/providers/media/MediaProvider;->mVolumeId:I
1189
1190 return-void
1191.end method
1192
1193.method static synthetic access$000()Ljava/lang/String;
1194 .locals 1
1195
1196 .prologue
1197 .line 97
1198 sget-object v0, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
1199
1200 return-object v0
1201.end method
1202
1203.method static synthetic access$100(Lcom/android/providers/media/MediaProvider;)Z
1204 .locals 1
1205 .parameter "x0"
1206
1207 .prologue
1208 .line 97
1209 iget-boolean v0, p0, Lcom/android/providers/media/MediaProvider;->isShuttingDown:Z
1210
1211 return v0
1212.end method
1213
1214.method static synthetic access$1000(Lcom/android/providers/media/MediaProvider;)Ljava/util/PriorityQueue;
1215 .locals 1
1216 .parameter "x0"
1217
1218 .prologue
1219 .line 97
1220 iget-object v0, p0, Lcom/android/providers/media/MediaProvider;->mMediaThumbQueue:Ljava/util/PriorityQueue;
1221
1222 return-object v0
1223.end method
1224
1225.method static synthetic access$102(Lcom/android/providers/media/MediaProvider;Z)Z
1226 .locals 0
1227 .parameter "x0"
1228 .parameter "x1"
1229
1230 .prologue
1231 .line 97
1232 iput-boolean p1, p0, Lcom/android/providers/media/MediaProvider;->isShuttingDown:Z
1233
1234 return p1
1235.end method
1236
1237.method static synthetic access$1100(Lcom/android/providers/media/MediaProvider;)Lcom/android/providers/media/MediaThumbRequest;
1238 .locals 1
1239 .parameter "x0"
1240
1241 .prologue
1242 .line 97
1243 iget-object v0, p0, Lcom/android/providers/media/MediaProvider;->mCurrentThumbRequest:Lcom/android/providers/media/MediaThumbRequest;
1244
1245 return-object v0
1246.end method
1247
1248.method static synthetic access$1102(Lcom/android/providers/media/MediaProvider;Lcom/android/providers/media/MediaThumbRequest;)Lcom/android/providers/media/MediaThumbRequest;
1249 .locals 0
1250 .parameter "x0"
1251 .parameter "x1"
1252
1253 .prologue
1254 .line 97
1255 iput-object p1, p0, Lcom/android/providers/media/MediaProvider;->mCurrentThumbRequest:Lcom/android/providers/media/MediaThumbRequest;
1256
1257 return-object p1
1258.end method
1259
1260.method static synthetic access$1200(Lcom/android/providers/media/MediaProvider;)Ljava/util/Stack;
1261 .locals 1
1262 .parameter "x0"
1263
1264 .prologue
1265 .line 97
1266 iget-object v0, p0, Lcom/android/providers/media/MediaProvider;->mThumbRequestStack:Ljava/util/Stack;
1267
1268 return-object v0
1269.end method
1270
1271.method static synthetic access$1300(Lcom/android/providers/media/MediaProvider;Lcom/android/providers/media/MediaProvider$ThumbData;)Landroid/os/ParcelFileDescriptor;
1272 .locals 1
1273 .parameter "x0"
1274 .parameter "x1"
1275
1276 .prologue
1277 .line 97
1278 invoke-direct {p0, p1}, Lcom/android/providers/media/MediaProvider;->makeThumbInternal(Lcom/android/providers/media/MediaProvider$ThumbData;)Landroid/os/ParcelFileDescriptor;
1279
1280 move-result-object v0
1281
1282 return-object v0
1283.end method
1284
1285.method static synthetic access$1400(Lcom/android/providers/media/MediaProvider;)Ljava/util/HashSet;
1286 .locals 1
1287 .parameter "x0"
1288
1289 .prologue
1290 .line 97
1291 iget-object v0, p0, Lcom/android/providers/media/MediaProvider;->mPendingThumbs:Ljava/util/HashSet;
1292
1293 return-object v0
1294.end method
1295
1296.method static synthetic access$200()[Ljava/lang/String;
1297 .locals 1
1298
1299 .prologue
1300 .line 97
1301 sget-object v0, Lcom/android/providers/media/MediaProvider;->mExternalStoragePaths:[Ljava/lang/String;
1302
1303 return-object v0
1304.end method
1305
1306.method static synthetic access$300(Lcom/android/providers/media/MediaProvider;Landroid/net/Uri;)V
1307 .locals 0
1308 .parameter "x0"
1309 .parameter "x1"
1310
1311 .prologue
1312 .line 97
1313 invoke-direct {p0, p1}, Lcom/android/providers/media/MediaProvider;->detachVolume(Landroid/net/Uri;)V
1314
1315 return-void
1316.end method
1317
1318.method static synthetic access$400()Ljava/util/HashMap;
1319 .locals 1
1320
1321 .prologue
1322 .line 97
1323 sget-object v0, Lcom/android/providers/media/MediaProvider;->sFolderArtMap:Ljava/util/HashMap;
1324
1325 return-object v0
1326.end method
1327
1328.method static synthetic access$500(Lcom/android/providers/media/MediaProvider;)Ljava/util/HashMap;
1329 .locals 1
1330 .parameter "x0"
1331
1332 .prologue
1333 .line 97
1334 iget-object v0, p0, Lcom/android/providers/media/MediaProvider;->mDatabases:Ljava/util/HashMap;
1335
1336 return-object v0
1337.end method
1338
1339.method static synthetic access$600(Lcom/android/providers/media/MediaProvider;)Z
1340 .locals 1
1341 .parameter "x0"
1342
1343 .prologue
1344 .line 97
1345 iget-boolean v0, p0, Lcom/android/providers/media/MediaProvider;->mDisableMtpObjectCallbacks:Z
1346
1347 return v0
1348.end method
1349
1350.method static synthetic access$602(Lcom/android/providers/media/MediaProvider;Z)Z
1351 .locals 0
1352 .parameter "x0"
1353 .parameter "x1"
1354
1355 .prologue
1356 .line 97
1357 iput-boolean p1, p0, Lcom/android/providers/media/MediaProvider;->mDisableMtpObjectCallbacks:Z
1358
1359 return p1
1360.end method
1361
1362.method static synthetic access$700(Lcom/android/providers/media/MediaProvider;)Lcom/android/providers/media/IMtpService;
1363 .locals 1
1364 .parameter "x0"
1365
1366 .prologue
1367 .line 97
1368 iget-object v0, p0, Lcom/android/providers/media/MediaProvider;->mMtpService:Lcom/android/providers/media/IMtpService;
1369
1370 return-object v0
1371.end method
1372
1373.method static synthetic access$702(Lcom/android/providers/media/MediaProvider;Lcom/android/providers/media/IMtpService;)Lcom/android/providers/media/IMtpService;
1374 .locals 0
1375 .parameter "x0"
1376 .parameter "x1"
1377
1378 .prologue
1379 .line 97
1380 iput-object p1, p0, Lcom/android/providers/media/MediaProvider;->mMtpService:Lcom/android/providers/media/IMtpService;
1381
1382 return-object p1
1383.end method
1384
1385.method static synthetic access$800(Lcom/android/providers/media/MediaProvider;J)V
1386 .locals 0
1387 .parameter "x0"
1388 .parameter "x1"
1389
1390 .prologue
1391 .line 97
1392 invoke-direct {p0, p1, p2}, Lcom/android/providers/media/MediaProvider;->sendObjectRemoved(J)V
1393
1394 return-void
1395.end method
1396
1397.method static synthetic access$900(Landroid/database/sqlite/SQLiteDatabase;ZII)V
1398 .locals 0
1399 .parameter "x0"
1400 .parameter "x1"
1401 .parameter "x2"
1402 .parameter "x3"
1403
1404 .prologue
1405 .line 97
1406 invoke-static {p0, p1, p2, p3}, Lcom/android/providers/media/MediaProvider;->updateDatabase(Landroid/database/sqlite/SQLiteDatabase;ZII)V
1407
1408 return-void
1409.end method
1410
1411.method private attachVolume(Ljava/lang/String;)Landroid/net/Uri;
1412 .locals 13
1413 .parameter
1414
1415 .prologue
1416 const/4 v2, 0x0
1417
1418 const/4 v6, 0x0
1419
1420 .line 4477
1421 invoke-static {}, Landroid/os/Binder;->getCallingPid()I
1422
1423 move-result v0
1424
1425 invoke-static {}, Landroid/os/Process;->myPid()I
1426
1427 move-result v1
1428
1429 if-eq v0, v1, :cond_0
1430
1431 .line 4478
1432 new-instance v0, Ljava/lang/SecurityException;
1433
1434 const-string v1, "Opening and closing databases not allowed."
1435
1436 invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
1437
1438 throw v0
1439
1440 .line 4482
1441 :cond_0
1442 iget-object v7, p0, Lcom/android/providers/media/MediaProvider;->mDatabases:Ljava/util/HashMap;
1443
1444 monitor-enter v7
1445
1446 .line 4483
1447 :try_start_0
1448 iget-object v0, p0, Lcom/android/providers/media/MediaProvider;->mDatabases:Ljava/util/HashMap;
1449
1450 invoke-virtual {v0, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
1451
1452 move-result-object v0
1453
1454 if-eqz v0, :cond_1
1455
1456 .line 4484
1457 new-instance v0, Ljava/lang/StringBuilder;
1458
1459 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
1460
1461 const-string v1, "content://media/"
1462
1463 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1464
1465 move-result-object v0
1466
1467 invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1468
1469 move-result-object v0
1470
1471 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
1472
1473 move-result-object v0
1474
1475 invoke-static {v0}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
1476
1477 move-result-object v0
1478
1479 monitor-exit v7
1480
1481 .line 4581
1482 :goto_0
1483 return-object v0
1484
1485 .line 4487
1486 :cond_1
1487 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
1488
1489 move-result-object v1
1490
1491 .line 4489
1492 const-string v0, "internal"
1493
1494 invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
1495
1496 move-result v0
1497
1498 if-eqz v0, :cond_2
1499
1500 .line 4490
1501 new-instance v0, Lcom/android/providers/media/MediaProvider$DatabaseHelper;
1502
1503 const-string v2, "internal.db"
1504
1505 const/4 v3, 0x1
1506
1507 const/4 v4, 0x0
1508
1509 iget-object v5, p0, Lcom/android/providers/media/MediaProvider;->mObjectRemovedCallback:Landroid/database/sqlite/SQLiteDatabase$CustomFunction;
1510
1511 invoke-direct/range {v0 .. v5}, Lcom/android/providers/media/MediaProvider$DatabaseHelper;-><init>(Landroid/content/Context;Ljava/lang/String;ZZLandroid/database/sqlite/SQLiteDatabase$CustomFunction;)V
1512
1513 .line 4548
1514 :goto_1
1515 iget-object v1, p0, Lcom/android/providers/media/MediaProvider;->mDatabases:Ljava/util/HashMap;
1516
1517 invoke-virtual {v1, p1, v0}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
1518
1519 .line 4550
1520 iget-boolean v1, v0, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->mInternal:Z
1521
1522 if-nez v1, :cond_e
1523
1524 .line 4552
1525 invoke-virtual {v0}, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->getWritableDatabase()Landroid/database/sqlite/SQLiteDatabase;
1526
1527 move-result-object v0
1528
1529 invoke-direct {p0, v0}, Lcom/android/providers/media/MediaProvider;->createDefaultFolders(Landroid/database/sqlite/SQLiteDatabase;)V
1530
1531 .line 4555
1532 new-instance v0, Ljava/io/File;
1533
1534 sget-object v1, Lcom/android/providers/media/MediaProvider;->mExternalStoragePaths:[Ljava/lang/String;
1535
1536 const/4 v2, 0x0
1537
1538 aget-object v1, v1, v2
1539
1540 const-string v2, "Android/data/com.android.providers.media/albumthumbs"
1541
1542 invoke-direct {v0, v1, v2}, Ljava/io/File;-><init>(Ljava/lang/String;Ljava/lang/String;)V
1543
1544 invoke-virtual {v0}, Ljava/io/File;->listFiles()[Ljava/io/File;
1545
1546 move-result-object v1
1547
1548 .line 4556
1549 new-instance v8, Ljava/util/HashSet;
1550
1551 invoke-direct {v8}, Ljava/util/HashSet;-><init>()V
1552
1553 move v0, v6
1554
1555 .line 4557
1556 :goto_2
1557 if-eqz v1, :cond_a
1558
1559 array-length v2, v1
1560
1561 if-ge v0, v2, :cond_a
1562
1563 .line 4558
1564 aget-object v2, v1, v0
1565
1566 invoke-virtual {v2}, Ljava/io/File;->getPath()Ljava/lang/String;
1567
1568 move-result-object v2
1569
1570 invoke-virtual {v8, v2}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
1571
1572 .line 4557
1573 add-int/lit8 v0, v0, 0x1
1574
1575 goto :goto_2
1576
1577 .line 4492
1578 :cond_2
1579 const-string v0, "external"
1580
1581 invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
1582
1583 move-result v0
1584
1585 if-eqz v0, :cond_9
1586
1587 .line 4493
1588 invoke-static {}, Landroid/os/Environment;->isExternalStorageRemovable()Z
1589
1590 move-result v0
1591
1592 if-eqz v0, :cond_3
1593
1594 .line 4494
1595 sget-object v0, Lcom/android/providers/media/MediaProvider;->mExternalStoragePaths:[Ljava/lang/String;
1596
1597 const/4 v2, 0x0
1598
1599 aget-object v0, v0, v2
1600
1601 .line 4495
1602 invoke-static {v0}, Landroid/os/FileUtils;->getFatVolumeId(Ljava/lang/String;)I
1603
1604 move-result v8
1605
1606 .line 4499
1607 new-instance v0, Ljava/lang/StringBuilder;
1608
1609 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
1610
1611 const-string v2, "external-"
1612
1613 invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1614
1615 move-result-object v0
1616
1617 invoke-static {v8}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String;
1618
1619 move-result-object v2
1620
1621 invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1622
1623 move-result-object v0
1624
1625 const-string v2, ".db"
1626
1627 invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1628
1629 move-result-object v0
1630
1631 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
1632
1633 move-result-object v2
1634
1635 .line 4500
1636 new-instance v0, Lcom/android/providers/media/MediaProvider$DatabaseHelper;
1637
1638 const/4 v3, 0x0
1639
1640 const/4 v4, 0x0
1641
1642 iget-object v5, p0, Lcom/android/providers/media/MediaProvider;->mObjectRemovedCallback:Landroid/database/sqlite/SQLiteDatabase$CustomFunction;
1643
1644 invoke-direct/range {v0 .. v5}, Lcom/android/providers/media/MediaProvider$DatabaseHelper;-><init>(Landroid/content/Context;Ljava/lang/String;ZZLandroid/database/sqlite/SQLiteDatabase$CustomFunction;)V
1645
1646 .line 4502
1647 iput v8, p0, Lcom/android/providers/media/MediaProvider;->mVolumeId:I
1648
1649 goto :goto_1
1650
1651 .line 4578
1652 :catchall_0
1653 move-exception v0
1654
1655 monitor-exit v7
1656 :try_end_0
1657 .catchall {:try_start_0 .. :try_end_0} :catchall_0
1658
1659 throw v0
1660
1661 .line 4508
1662 :cond_3
1663 :try_start_1
1664 const-string v0, "external.db"
1665
1666 invoke-virtual {v1, v0}, Landroid/content/Context;->getDatabasePath(Ljava/lang/String;)Ljava/io/File;
1667
1668 move-result-object v3
1669
1670 .line 4509
1671 invoke-virtual {v3}, Ljava/io/File;->exists()Z
1672
1673 move-result v0
1674
1675 if-nez v0, :cond_f
1676
1677 .line 4514
1678 invoke-virtual {v1}, Landroid/content/Context;->databaseList()[Ljava/lang/String;
1679
1680 move-result-object v5
1681
1682 array-length v8, v5
1683
1684 move v4, v6
1685
1686 :goto_3
1687 if-ge v4, v8, :cond_7
1688
1689 aget-object v0, v5, v4
1690
1691 .line 4515
1692 const-string v9, "external-"
1693
1694 invoke-virtual {v0, v9}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
1695
1696 move-result v9
1697
1698 if-eqz v9, :cond_6
1699
1700 .line 4516
1701 invoke-virtual {v1, v0}, Landroid/content/Context;->getDatabasePath(Ljava/lang/String;)Ljava/io/File;
1702
1703 move-result-object v0
1704
1705 .line 4517
1706 if-nez v2, :cond_4
1707
1708 .line 4514
1709 :goto_4
1710 add-int/lit8 v2, v4, 0x1
1711
1712 move v4, v2
1713
1714 move-object v2, v0
1715
1716 goto :goto_3
1717
1718 .line 4519
1719 :cond_4
1720 invoke-virtual {v0}, Ljava/io/File;->lastModified()J
1721
1722 move-result-wide v9
1723
1724 invoke-virtual {v2}, Ljava/io/File;->lastModified()J
1725
1726 move-result-wide v11
1727
1728 cmp-long v9, v9, v11
1729
1730 if-lez v9, :cond_5
1731
1732 .line 4520
1733 invoke-virtual {v2}, Ljava/io/File;->delete()Z
1734
1735 goto :goto_4
1736
1737 .line 4523
1738 :cond_5
1739 invoke-virtual {v0}, Ljava/io/File;->delete()Z
1740
1741 :cond_6
1742 move-object v0, v2
1743
1744 goto :goto_4
1745
1746 .line 4527
1747 :cond_7
1748 if-eqz v2, :cond_f
1749
1750 .line 4528
1751 invoke-virtual {v2, v3}, Ljava/io/File;->renameTo(Ljava/io/File;)Z
1752
1753 move-result v0
1754
1755 if-eqz v0, :cond_8
1756
1757 .line 4529
1758 sget-boolean v0, Lcom/android/providers/media/MediaProvider;->DEBUG:Z
1759
1760 if-eqz v0, :cond_f
1761
1762 sget-object v0, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
1763
1764 new-instance v4, Ljava/lang/StringBuilder;
1765
1766 invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
1767
1768 const-string v5, "renamed database "
1769
1770 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1771
1772 move-result-object v4
1773
1774 invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String;
1775
1776 move-result-object v2
1777
1778 invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1779
1780 move-result-object v2
1781
1782 const-string v4, " to "
1783
1784 invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1785
1786 move-result-object v2
1787
1788 const-string v4, "external.db"
1789
1790 invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1791
1792 move-result-object v2
1793
1794 invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
1795
1796 move-result-object v2
1797
1798 invoke-static {v0, v2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
1799
1800 move-object v2, v3
1801
1802 .line 4541
1803 :goto_5
1804 new-instance v0, Lcom/android/providers/media/MediaProvider$DatabaseHelper;
1805
1806 invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String;
1807
1808 move-result-object v2
1809
1810 const/4 v3, 0x0
1811
1812 const/4 v4, 0x0
1813
1814 iget-object v5, p0, Lcom/android/providers/media/MediaProvider;->mObjectRemovedCallback:Landroid/database/sqlite/SQLiteDatabase$CustomFunction;
1815
1816 invoke-direct/range {v0 .. v5}, Lcom/android/providers/media/MediaProvider$DatabaseHelper;-><init>(Landroid/content/Context;Ljava/lang/String;ZZLandroid/database/sqlite/SQLiteDatabase$CustomFunction;)V
1817
1818 goto/16 :goto_1
1819
1820 .line 4532
1821 :cond_8
1822 sget-object v0, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
1823
1824 new-instance v3, Ljava/lang/StringBuilder;
1825
1826 invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
1827
1828 const-string v4, "Failed to rename database "
1829
1830 invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1831
1832 move-result-object v3
1833
1834 invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String;
1835
1836 move-result-object v4
1837
1838 invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1839
1840 move-result-object v3
1841
1842 const-string v4, " to "
1843
1844 invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1845
1846 move-result-object v3
1847
1848 const-string v4, "external.db"
1849
1850 invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1851
1852 move-result-object v3
1853
1854 invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
1855
1856 move-result-object v3
1857
1858 invoke-static {v0, v3}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
1859
1860 goto :goto_5
1861
1862 .line 4545
1863 :cond_9
1864 new-instance v0, Ljava/lang/IllegalArgumentException;
1865
1866 new-instance v1, Ljava/lang/StringBuilder;
1867
1868 invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
1869
1870 const-string v2, "There is no volume named "
1871
1872 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1873
1874 move-result-object v1
1875
1876 invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1877
1878 move-result-object v1
1879
1880 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
1881
1882 move-result-object v1
1883
1884 invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
1885
1886 throw v0
1887
1888 .line 4561
1889 :cond_a
1890 sget-object v1, Landroid/provider/MediaStore$Audio$Albums;->EXTERNAL_CONTENT_URI:Landroid/net/Uri;
1891
1892 const/4 v0, 0x1
1893
1894 new-array v2, v0, [Ljava/lang/String;
1895
1896 const/4 v0, 0x0
1897
1898 const-string v3, "album_art"
1899
1900 aput-object v3, v2, v0
1901
1902 const/4 v3, 0x0
1903
1904 const/4 v4, 0x0
1905
1906 const/4 v5, 0x0
1907
1908 move-object v0, p0
1909
1910 invoke-virtual/range {v0 .. v5}, Lcom/android/providers/media/MediaProvider;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
1911 :try_end_1
1912 .catchall {:try_start_1 .. :try_end_1} :catchall_0
1913
1914 move-result-object v1
1915
1916 .line 4564
1917 :goto_6
1918 if-eqz v1, :cond_c
1919
1920 :try_start_2
1921 invoke-interface {v1}, Landroid/database/Cursor;->moveToNext()Z
1922
1923 move-result v0
1924
1925 if-eqz v0, :cond_c
1926
1927 .line 4565
1928 const/4 v0, 0x0
1929
1930 invoke-interface {v1, v0}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
1931
1932 move-result-object v0
1933
1934 invoke-virtual {v8, v0}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
1935 :try_end_2
1936 .catchall {:try_start_2 .. :try_end_2} :catchall_1
1937
1938 goto :goto_6
1939
1940 .line 4568
1941 :catchall_1
1942 move-exception v0
1943
1944 if-eqz v1, :cond_b
1945
1946 :try_start_3
1947 invoke-interface {v1}, Landroid/database/Cursor;->close()V
1948
1949 :cond_b
1950 throw v0
1951
1952 :cond_c
1953 if-eqz v1, :cond_d
1954
1955 invoke-interface {v1}, Landroid/database/Cursor;->close()V
1956
1957 .line 4571
1958 :cond_d
1959 invoke-virtual {v8}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;
1960
1961 move-result-object v1
1962
1963 .line 4572
1964 :goto_7
1965 invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
1966
1967 move-result v0
1968
1969 if-eqz v0, :cond_e
1970
1971 .line 4573
1972 invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
1973
1974 move-result-object v0
1975
1976 check-cast v0, Ljava/lang/String;
1977
1978 .line 4575
1979 new-instance v2, Ljava/io/File;
1980
1981 invoke-direct {v2, v0}, Ljava/io/File;-><init>(Ljava/lang/String;)V
1982
1983 invoke-virtual {v2}, Ljava/io/File;->delete()Z
1984
1985 goto :goto_7
1986
1987 .line 4578
1988 :cond_e
1989 monitor-exit v7
1990 :try_end_3
1991 .catchall {:try_start_3 .. :try_end_3} :catchall_0
1992
1993 .line 4581
1994 new-instance v0, Ljava/lang/StringBuilder;
1995
1996 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
1997
1998 const-string v1, "content://media/"
1999
2000 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2001
2002 move-result-object v0
2003
2004 invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2005
2006 move-result-object v0
2007
2008 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
2009
2010 move-result-object v0
2011
2012 invoke-static {v0}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
2013
2014 move-result-object v0
2015
2016 goto/16 :goto_0
2017
2018 :cond_f
2019 move-object v2, v3
2020
2021 goto/16 :goto_5
2022.end method
2023
2024.method private combine(Ljava/util/List;[Ljava/lang/String;)[Ljava/lang/String;
2025 .locals 6
2026 .parameter
2027 .parameter "userArgs"
2028 .annotation system Ldalvik/annotation/Signature;
2029 value = {
2030 "(",
2031 "Ljava/util/List",
2032 "<",
2033 "Ljava/lang/String;",
2034 ">;[",
2035 "Ljava/lang/String;",
2036 ")[",
2037 "Ljava/lang/String;"
2038 }
2039 .end annotation
2040
2041 .prologue
2042 .line 2297
2043 .local p1, prepend:Ljava/util/List;,"Ljava/util/List<Ljava/lang/String;>;"
2044 invoke-interface {p1}, Ljava/util/List;->size()I
2045
2046 move-result v2
2047
2048 .line 2298
2049 .local v2, presize:I
2050 if-nez v2, :cond_0
2051
2052 .line 2310
2053 .end local p2
2054 :goto_0
2055 return-object p2
2056
2057 .line 2302
2058 .restart local p2
2059 :cond_0
2060 if-eqz p2, :cond_1
2061
2062 array-length v3, p2
2063
2064 .line 2303
2065 .local v3, usersize:I
2066 :goto_1
2067 add-int v4, v2, v3
2068
2069 new-array v0, v4, [Ljava/lang/String;
2070
2071 .line 2304
2072 .local v0, combined:[Ljava/lang/String;
2073 const/4 v1, 0x0
2074
2075 .local v1, i:I
2076 :goto_2
2077 if-ge v1, v2, :cond_2
2078
2079 .line 2305
2080 invoke-interface {p1, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
2081
2082 move-result-object v4
2083
2084 check-cast v4, Ljava/lang/String;
2085
2086 aput-object v4, v0, v1
2087
2088 .line 2304
2089 add-int/lit8 v1, v1, 0x1
2090
2091 goto :goto_2
2092
2093 .line 2302
2094 .end local v0 #combined:[Ljava/lang/String;
2095 .end local v1 #i:I
2096 .end local v3 #usersize:I
2097 :cond_1
2098 const/4 v3, 0x0
2099
2100 goto :goto_1
2101
2102 .line 2307
2103 .restart local v0 #combined:[Ljava/lang/String;
2104 .restart local v1 #i:I
2105 .restart local v3 #usersize:I
2106 :cond_2
2107 const/4 v1, 0x0
2108
2109 :goto_3
2110 if-ge v1, v3, :cond_3
2111
2112 .line 2308
2113 add-int v4, v2, v1
2114
2115 aget-object v5, p2, v1
2116
2117 aput-object v5, v0, v4
2118
2119 .line 2307
2120 add-int/lit8 v1, v1, 0x1
2121
2122 goto :goto_3
2123
2124 :cond_3
2125 move-object p2, v0
2126
2127 .line 2310
2128 goto :goto_0
2129.end method
2130
2131.method private static computeBucketValues(Ljava/lang/String;Landroid/content/ContentValues;)V
2132 .locals 5
2133 .parameter "data"
2134 .parameter "values"
2135
2136 .prologue
2137 .line 1728
2138 new-instance v3, Ljava/io/File;
2139
2140 invoke-direct {v3, p0}, Ljava/io/File;-><init>(Ljava/lang/String;)V
2141
2142 invoke-virtual {v3}, Ljava/io/File;->getParentFile()Ljava/io/File;
2143
2144 move-result-object v1
2145
2146 .line 1729
2147 .local v1, parentFile:Ljava/io/File;
2148 if-nez v1, :cond_0
2149
2150 .line 1730
2151 new-instance v1, Ljava/io/File;
2152
2153 .end local v1 #parentFile:Ljava/io/File;
2154 const-string v3, "/"
2155
2156 invoke-direct {v1, v3}, Ljava/io/File;-><init>(Ljava/lang/String;)V
2157
2158 .line 1736
2159 .restart local v1 #parentFile:Ljava/io/File;
2160 :cond_0
2161 invoke-virtual {v1}, Ljava/io/File;->toString()Ljava/lang/String;
2162
2163 move-result-object v3
2164
2165 invoke-virtual {v3}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;
2166
2167 move-result-object v2
2168
2169 .line 1737
2170 .local v2, path:Ljava/lang/String;
2171 invoke-virtual {v1}, Ljava/io/File;->getName()Ljava/lang/String;
2172
2173 move-result-object v0
2174
2175 .line 1742
2176 .local v0, name:Ljava/lang/String;
2177 const-string v3, "bucket_id"
2178
2179 invoke-virtual {v2}, Ljava/lang/String;->hashCode()I
2180
2181 move-result v4
2182
2183 invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
2184
2185 move-result-object v4
2186
2187 invoke-virtual {p1, v3, v4}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V
2188
2189 .line 1743
2190 const-string v3, "bucket_display_name"
2191
2192 invoke-virtual {p1, v3, v0}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
2193
2194 .line 1744
2195 return-void
2196.end method
2197
2198.method private static computeDisplayName(Ljava/lang/String;Landroid/content/ContentValues;)V
2199 .locals 2
2200 .parameter
2201 .parameter
2202
2203 .prologue
2204 .line 1752
2205 if-nez p0, :cond_1
2206
2207 const-string v0, ""
2208
2209 .line 1753
2210 :goto_0
2211 const/16 v1, 0x2f
2212
2213 invoke-virtual {v0, v1}, Ljava/lang/String;->lastIndexOf(I)I
2214
2215 move-result v1
2216
2217 .line 1754
2218 if-ltz v1, :cond_0
2219
2220 .line 1755
2221 add-int/lit8 v1, v1, 0x1
2222
2223 invoke-virtual {v0, v1}, Ljava/lang/String;->substring(I)Ljava/lang/String;
2224
2225 move-result-object v0
2226
2227 .line 1757
2228 :cond_0
2229 const-string v1, "_display_name"
2230
2231 invoke-virtual {p1, v1, v0}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
2232
2233 .line 1758
2234 return-void
2235
2236 .line 1752
2237 :cond_1
2238 invoke-virtual {p0}, Ljava/lang/String;->toString()Ljava/lang/String;
2239
2240 move-result-object v0
2241
2242 goto :goto_0
2243.end method
2244
2245.method private static computeTakenTime(Landroid/content/ContentValues;)V
2246 .locals 6
2247 .parameter "values"
2248
2249 .prologue
2250 .line 1767
2251 const-string v1, "datetaken"
2252
2253 invoke-virtual {p0, v1}, Landroid/content/ContentValues;->containsKey(Ljava/lang/String;)Z
2254
2255 move-result v1
2256
2257 if-nez v1, :cond_0
2258
2259 .line 1770
2260 const-string v1, "date_modified"
2261
2262 invoke-virtual {p0, v1}, Landroid/content/ContentValues;->getAsLong(Ljava/lang/String;)Ljava/lang/Long;
2263
2264 move-result-object v0
2265
2266 .line 1771
2267 .local v0, lastModified:Ljava/lang/Long;
2268 if-eqz v0, :cond_0
2269
2270 .line 1772
2271 const-string v1, "datetaken"
2272
2273 invoke-virtual {v0}, Ljava/lang/Long;->longValue()J
2274
2275 move-result-wide v2
2276
2277 const-wide/16 v4, 0x3e8
2278
2279 mul-long/2addr v2, v4
2280
2281 invoke-static {v2, v3}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
2282
2283 move-result-object v2
2284
2285 invoke-virtual {p0, v1, v2}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
2286
2287 .line 1775
2288 .end local v0 #lastModified:Ljava/lang/Long;
2289 :cond_0
2290 return-void
2291.end method
2292
2293.method private createDefaultFolders(Landroid/database/sqlite/SQLiteDatabase;)V
2294 .locals 6
2295 .parameter
2296
2297 .prologue
2298 const/4 v0, 0x0
2299
2300 .line 483
2301 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
2302
2303 move-result-object v1
2304
2305 invoke-static {v1}, Landroid/preference/PreferenceManager;->getDefaultSharedPreferences(Landroid/content/Context;)Landroid/content/SharedPreferences;
2306
2307 move-result-object v1
2308
2309 .line 484
2310 const-string v2, "created_default_folders"
2311
2312 invoke-interface {v1, v2, v0}, Landroid/content/SharedPreferences;->getInt(Ljava/lang/String;I)I
2313
2314 move-result v2
2315
2316 if-nez v2, :cond_2
2317
2318 .line 485
2319 sget-object v2, Lcom/android/providers/media/MediaProvider;->sDefaultFolderNames:[Ljava/lang/String;
2320
2321 array-length v3, v2
2322
2323 :goto_0
2324 if-ge v0, v3, :cond_1
2325
2326 aget-object v4, v2, v0
2327
2328 .line 486
2329 invoke-static {v4}, Landroid/os/Environment;->getExternalStoragePublicDirectory(Ljava/lang/String;)Ljava/io/File;
2330
2331 move-result-object v4
2332
2333 .line 487
2334 invoke-virtual {v4}, Ljava/io/File;->exists()Z
2335
2336 move-result v5
2337
2338 if-nez v5, :cond_0
2339
2340 .line 488
2341 invoke-virtual {v4}, Ljava/io/File;->mkdirs()Z
2342
2343 .line 489
2344 invoke-virtual {v4}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
2345
2346 move-result-object v4
2347
2348 invoke-direct {p0, p1, v4}, Lcom/android/providers/media/MediaProvider;->insertDirectory(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)J
2349
2350 .line 485
2351 :cond_0
2352 add-int/lit8 v0, v0, 0x1
2353
2354 goto :goto_0
2355
2356 .line 493
2357 :cond_1
2358 invoke-interface {v1}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor;
2359
2360 move-result-object v0
2361
2362 .line 494
2363 invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->clear()Landroid/content/SharedPreferences$Editor;
2364
2365 .line 495
2366 const-string v1, "created_default_folders"
2367
2368 const/4 v2, 0x1
2369
2370 invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences$Editor;->putInt(Ljava/lang/String;I)Landroid/content/SharedPreferences$Editor;
2371
2372 .line 496
2373 invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->commit()Z
2374
2375 .line 498
2376 :cond_2
2377 return-void
2378.end method
2379
2380.method private detachVolume(Landroid/net/Uri;)V
2381 .locals 6
2382 .parameter
2383
2384 .prologue
2385 .line 4592
2386 invoke-static {}, Landroid/os/Binder;->getCallingPid()I
2387
2388 move-result v0
2389
2390 invoke-static {}, Landroid/os/Process;->myPid()I
2391
2392 move-result v1
2393
2394 if-eq v0, v1, :cond_0
2395
2396 .line 4593
2397 new-instance v0, Ljava/lang/SecurityException;
2398
2399 const-string v1, "Opening and closing databases not allowed."
2400
2401 invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
2402
2403 throw v0
2404
2405 .line 4597
2406 :cond_0
2407 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
2408
2409 move-result-object v0
2410
2411 const/4 v1, 0x0
2412
2413 invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
2414
2415 move-result-object v0
2416
2417 check-cast v0, Ljava/lang/String;
2418
2419 .line 4598
2420 const-string v1, "internal"
2421
2422 invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
2423
2424 move-result v1
2425
2426 if-eqz v1, :cond_1
2427
2428 .line 4599
2429 new-instance v0, Ljava/lang/UnsupportedOperationException;
2430
2431 const-string v1, "Deleting the internal volume is not allowed"
2432
2433 invoke-direct {v0, v1}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
2434
2435 throw v0
2436
2437 .line 4601
2438 :cond_1
2439 const-string v1, "external"
2440
2441 invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
2442
2443 move-result v1
2444
2445 if-nez v1, :cond_2
2446
2447 .line 4602
2448 new-instance v1, Ljava/lang/IllegalArgumentException;
2449
2450 new-instance v2, Ljava/lang/StringBuilder;
2451
2452 invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
2453
2454 const-string v3, "There is no volume named "
2455
2456 invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2457
2458 move-result-object v2
2459
2460 invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2461
2462 move-result-object v0
2463
2464 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
2465
2466 move-result-object v0
2467
2468 invoke-direct {v1, v0}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
2469
2470 throw v1
2471
2472 .line 4606
2473 :cond_2
2474 iget-object v3, p0, Lcom/android/providers/media/MediaProvider;->mDatabases:Ljava/util/HashMap;
2475
2476 monitor-enter v3
2477
2478 .line 4607
2479 :try_start_0
2480 iget-object v1, p0, Lcom/android/providers/media/MediaProvider;->mDatabases:Ljava/util/HashMap;
2481
2482 invoke-virtual {v1, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
2483
2484 move-result-object v1
2485
2486 check-cast v1, Lcom/android/providers/media/MediaProvider$DatabaseHelper;
2487
2488 .line 4608
2489 if-nez v1, :cond_3
2490
2491 monitor-exit v3
2492 :try_end_0
2493 .catchall {:try_start_0 .. :try_end_0} :catchall_0
2494
2495 .line 4624
2496 :goto_0
2497 return-void
2498
2499 .line 4612
2500 :cond_3
2501 :try_start_1
2502 new-instance v2, Ljava/io/File;
2503
2504 invoke-virtual {v1}, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->getReadableDatabase()Landroid/database/sqlite/SQLiteDatabase;
2505
2506 move-result-object v4
2507
2508 invoke-virtual {v4}, Landroid/database/sqlite/SQLiteDatabase;->getPath()Ljava/lang/String;
2509
2510 move-result-object v4
2511
2512 invoke-direct {v2, v4}, Ljava/io/File;-><init>(Ljava/lang/String;)V
2513
2514 .line 4613
2515 invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
2516
2517 move-result-wide v4
2518
2519 invoke-virtual {v2, v4, v5}, Ljava/io/File;->setLastModified(J)Z
2520 :try_end_1
2521 .catchall {:try_start_1 .. :try_end_1} :catchall_0
2522 .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_0
2523
2524 .line 4618
2525 :goto_1
2526 :try_start_2
2527 iget-object v2, p0, Lcom/android/providers/media/MediaProvider;->mDatabases:Ljava/util/HashMap;
2528
2529 invoke-virtual {v2, v0}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
2530
2531 .line 4619
2532 invoke-virtual {v1}, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->close()V
2533
2534 .line 4620
2535 monitor-exit v3
2536 :try_end_2
2537 .catchall {:try_start_2 .. :try_end_2} :catchall_0
2538
2539 .line 4622
2540 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
2541
2542 move-result-object v0
2543
2544 invoke-virtual {v0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
2545
2546 move-result-object v0
2547
2548 const/4 v1, 0x0
2549
2550 invoke-virtual {v0, p1, v1}, Landroid/content/ContentResolver;->notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;)V
2551
2552 goto :goto_0
2553
2554 .line 4614
2555 :catch_0
2556 move-exception v2
2557
2558 .line 4615
2559 :try_start_3
2560 sget-object v4, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
2561
2562 const-string v5, "Can\'t touch database file"
2563
2564 invoke-static {v4, v5, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
2565
2566 goto :goto_1
2567
2568 .line 4620
2569 :catchall_0
2570 move-exception v0
2571
2572 monitor-exit v3
2573 :try_end_3
2574 .catchall {:try_start_3 .. :try_end_3} :catchall_0
2575
2576 throw v0
2577.end method
2578
2579.method private doAudioSearch(Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteQueryBuilder;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/database/Cursor;
2580 .locals 10
2581 .parameter
2582 .parameter
2583 .parameter
2584 .parameter
2585 .parameter
2586 .parameter
2587 .parameter
2588 .parameter
2589 .parameter
2590
2591 .prologue
2592 .line 2318
2593 invoke-virtual {p3}, Landroid/net/Uri;->getPath()Ljava/lang/String;
2594
2595 move-result-object v1
2596
2597 const-string v2, "/"
2598
2599 invoke-virtual {v1, v2}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
2600
2601 move-result v1
2602
2603 if-eqz v1, :cond_1
2604
2605 const-string v1, ""
2606
2607 .line 2319
2608 :goto_0
2609 const-string v2, " "
2610
2611 const-string v3, " "
2612
2613 invoke-virtual {v1, v2, v3}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
2614
2615 move-result-object v1
2616
2617 invoke-virtual {v1}, Ljava/lang/String;->trim()Ljava/lang/String;
2618
2619 move-result-object v1
2620
2621 invoke-virtual {v1}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;
2622
2623 move-result-object v1
2624
2625 .line 2321
2626 invoke-virtual {v1}, Ljava/lang/String;->length()I
2627
2628 move-result v2
2629
2630 if-lez v2, :cond_2
2631
2632 const-string v2, " "
2633
2634 invoke-virtual {v1, v2}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
2635
2636 move-result-object v1
2637
2638 .line 2323
2639 :goto_1
2640 array-length v2, v1
2641
2642 new-array v5, v2, [Ljava/lang/String;
2643
2644 .line 2324
2645 invoke-static {}, Ljava/text/Collator;->getInstance()Ljava/text/Collator;
2646
2647 move-result-object v2
2648
2649 .line 2325
2650 const/4 v3, 0x0
2651
2652 invoke-virtual {v2, v3}, Ljava/text/Collator;->setStrength(I)V
2653
2654 .line 2326
2655 array-length v4, v1
2656
2657 .line 2327
2658 const/4 v2, 0x0
2659
2660 move v3, v2
2661
2662 :goto_2
2663 if-ge v3, v4, :cond_4
2664
2665 .line 2330
2666 aget-object v2, v1, v3
2667
2668 invoke-static {v2}, Landroid/provider/MediaStore$Audio;->keyFor(Ljava/lang/String;)Ljava/lang/String;
2669
2670 move-result-object v2
2671
2672 .line 2331
2673 const-string v6, "\\"
2674
2675 const-string v7, "\\\\"
2676
2677 invoke-virtual {v2, v6, v7}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
2678
2679 move-result-object v2
2680
2681 .line 2332
2682 const-string v6, "%"
2683
2684 const-string v7, "\\%"
2685
2686 invoke-virtual {v2, v6, v7}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
2687
2688 move-result-object v2
2689
2690 .line 2333
2691 const-string v6, "_"
2692
2693 const-string v7, "\\_"
2694
2695 invoke-virtual {v2, v6, v7}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
2696
2697 move-result-object v2
2698
2699 .line 2334
2700 aget-object v6, v1, v3
2701
2702 const-string v7, "a"
2703
2704 invoke-virtual {v6, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
2705
2706 move-result v6
2707
2708 if-nez v6, :cond_0
2709
2710 aget-object v6, v1, v3
2711
2712 const-string v7, "an"
2713
2714 invoke-virtual {v6, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
2715
2716 move-result v6
2717
2718 if-nez v6, :cond_0
2719
2720 aget-object v6, v1, v3
2721
2722 const-string v7, "the"
2723
2724 invoke-virtual {v6, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
2725
2726 move-result v6
2727
2728 if-eqz v6, :cond_3
2729
2730 :cond_0
2731 const-string v2, "%"
2732
2733 :goto_3
2734 aput-object v2, v5, v3
2735
2736 .line 2327
2737 add-int/lit8 v2, v3, 0x1
2738
2739 move v3, v2
2740
2741 goto :goto_2
2742
2743 .line 2318
2744 :cond_1
2745 invoke-virtual {p3}, Landroid/net/Uri;->getLastPathSegment()Ljava/lang/String;
2746
2747 move-result-object v1
2748
2749 goto :goto_0
2750
2751 .line 2321
2752 :cond_2
2753 const/4 v1, 0x0
2754
2755 new-array v1, v1, [Ljava/lang/String;
2756
2757 goto :goto_1
2758
2759 .line 2334
2760 :cond_3
2761 new-instance v6, Ljava/lang/StringBuilder;
2762
2763 invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
2764
2765 const-string v7, "%"
2766
2767 invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2768
2769 move-result-object v6
2770
2771 invoke-virtual {v6, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2772
2773 move-result-object v2
2774
2775 const-string v6, "%"
2776
2777 invoke-virtual {v2, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2778
2779 move-result-object v2
2780
2781 invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
2782
2783 move-result-object v2
2784
2785 goto :goto_3
2786
2787 .line 2339
2788 :cond_4
2789 const-string v4, ""
2790
2791 .line 2340
2792 const/4 v2, 0x0
2793
2794 move v3, v2
2795
2796 :goto_4
2797 array-length v2, v1
2798
2799 if-ge v3, v2, :cond_6
2800
2801 .line 2341
2802 if-nez v3, :cond_5
2803
2804 .line 2342
2805 const-string v2, "match LIKE ? ESCAPE \'\\\'"
2806
2807 .line 2340
2808 :goto_5
2809 add-int/lit8 v3, v3, 0x1
2810
2811 move-object v4, v2
2812
2813 goto :goto_4
2814
2815 .line 2344
2816 :cond_5
2817 new-instance v2, Ljava/lang/StringBuilder;
2818
2819 invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
2820
2821 invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2822
2823 move-result-object v2
2824
2825 const-string v4, " AND match LIKE ? ESCAPE \'\\\'"
2826
2827 invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2828
2829 move-result-object v2
2830
2831 invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
2832
2833 move-result-object v2
2834
2835 goto :goto_5
2836
2837 .line 2348
2838 :cond_6
2839 const-string v1, "search"
2840
2841 invoke-virtual {p2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
2842
2843 .line 2350
2844 const/16 v1, 0x192
2845
2846 move/from16 v0, p8
2847
2848 if-ne v0, v1, :cond_7
2849
2850 .line 2351
2851 iget-object v3, p0, Lcom/android/providers/media/MediaProvider;->mSearchColsFancy:[Ljava/lang/String;
2852
2853 .line 2357
2854 :goto_6
2855 const/4 v6, 0x0
2856
2857 const/4 v7, 0x0
2858
2859 const/4 v8, 0x0
2860
2861 move-object v1, p2
2862
2863 move-object v2, p1
2864
2865 move-object/from16 v9, p9
2866
2867 invoke-virtual/range {v1 .. v9}, Landroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
2868
2869 move-result-object v1
2870
2871 return-object v1
2872
2873 .line 2352
2874 :cond_7
2875 const/16 v1, 0x191
2876
2877 move/from16 v0, p8
2878
2879 if-ne v0, v1, :cond_8
2880
2881 .line 2353
2882 iget-object v3, p0, Lcom/android/providers/media/MediaProvider;->mSearchColsBasic:[Ljava/lang/String;
2883
2884 goto :goto_6
2885
2886 .line 2355
2887 :cond_8
2888 iget-object v3, p0, Lcom/android/providers/media/MediaProvider;->mSearchColsLegacy:[Ljava/lang/String;
2889
2890 goto :goto_6
2891.end method
2892
2893.method private ensureFile(ZLandroid/content/ContentValues;Ljava/lang/String;Ljava/lang/String;)Landroid/content/ContentValues;
2894 .locals 5
2895 .parameter "internal"
2896 .parameter "initialValues"
2897 .parameter "preferredExtension"
2898 .parameter "directoryName"
2899
2900 .prologue
2901 .line 2426
2902 const-string v2, "_data"
2903
2904 invoke-virtual {p2, v2}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
2905
2906 move-result-object v0
2907
2908 .line 2427
2909 .local v0, file:Ljava/lang/String;
2910 invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
2911
2912 move-result v2
2913
2914 if-eqz v2, :cond_0
2915
2916 .line 2428
2917 invoke-direct {p0, p1, p3, p4}, Lcom/android/providers/media/MediaProvider;->generateFileName(ZLjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
2918
2919 move-result-object v0
2920
2921 .line 2429
2922 new-instance v1, Landroid/content/ContentValues;
2923
2924 invoke-direct {v1, p2}, Landroid/content/ContentValues;-><init>(Landroid/content/ContentValues;)V
2925
2926 .line 2430
2927 .local v1, values:Landroid/content/ContentValues;
2928 const-string v2, "_data"
2929
2930 invoke-virtual {v1, v2, v0}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
2931
2932 .line 2435
2933 :goto_0
2934 invoke-direct {p0, v0}, Lcom/android/providers/media/MediaProvider;->ensureFileExists(Ljava/lang/String;)Z
2935
2936 move-result v2
2937
2938 if-nez v2, :cond_1
2939
2940 .line 2436
2941 new-instance v2, Ljava/lang/IllegalStateException;
2942
2943 new-instance v3, Ljava/lang/StringBuilder;
2944
2945 invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
2946
2947 const-string v4, "Unable to create new file: "
2948
2949 invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2950
2951 move-result-object v3
2952
2953 invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2954
2955 move-result-object v3
2956
2957 invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
2958
2959 move-result-object v3
2960
2961 invoke-direct {v2, v3}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
2962
2963 throw v2
2964
2965 .line 2432
2966 .end local v1 #values:Landroid/content/ContentValues;
2967 :cond_0
2968 move-object v1, p2
2969
2970 .restart local v1 #values:Landroid/content/ContentValues;
2971 goto :goto_0
2972
2973 .line 2438
2974 :cond_1
2975 return-object v1
2976.end method
2977
2978.method private ensureFileExists(Ljava/lang/String;)Z
2979 .locals 8
2980 .parameter "path"
2981
2982 .prologue
2983 const/4 v5, 0x1
2984
2985 const/4 v6, 0x0
2986
2987 .line 3376
2988 new-instance v2, Ljava/io/File;
2989
2990 invoke-direct {v2, p1}, Ljava/io/File;-><init>(Ljava/lang/String;)V
2991
2992 .line 3377
2993 .local v2, file:Ljava/io/File;
2994 invoke-virtual {v2}, Ljava/io/File;->exists()Z
2995
2996 move-result v7
2997
2998 if-eqz v7, :cond_0
2999
3000 .line 3394
3001 :goto_0
3002 return v5
3003
3004 .line 3382
3005 :cond_0
3006 const/16 v7, 0x2f
3007
3008 invoke-virtual {p1, v7, v5}, Ljava/lang/String;->indexOf(II)I
3009
3010 move-result v4
3011
3012 .line 3383
3013 .local v4, secondSlash:I
3014 if-ge v4, v5, :cond_1
3015
3016 move v5, v6
3017
3018 goto :goto_0
3019
3020 .line 3384
3021 :cond_1
3022 invoke-virtual {p1, v6, v4}, Ljava/lang/String;->substring(II)Ljava/lang/String;
3023
3024 move-result-object v1
3025
3026 .line 3385
3027 .local v1, directoryPath:Ljava/lang/String;
3028 new-instance v0, Ljava/io/File;
3029
3030 invoke-direct {v0, v1}, Ljava/io/File;-><init>(Ljava/lang/String;)V
3031
3032 .line 3386
3033 .local v0, directory:Ljava/io/File;
3034 invoke-virtual {v0}, Ljava/io/File;->exists()Z
3035
3036 move-result v5
3037
3038 if-nez v5, :cond_2
3039
3040 move v5, v6
3041
3042 .line 3387
3043 goto :goto_0
3044
3045 .line 3388
3046 :cond_2
3047 invoke-virtual {v2}, Ljava/io/File;->getParentFile()Ljava/io/File;
3048
3049 move-result-object v5
3050
3051 invoke-virtual {v5}, Ljava/io/File;->mkdirs()Z
3052
3053 .line 3390
3054 :try_start_0
3055 invoke-virtual {v2}, Ljava/io/File;->createNewFile()Z
3056 :try_end_0
3057 .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0
3058
3059 move-result v5
3060
3061 goto :goto_0
3062
3063 .line 3391
3064 :catch_0
3065 move-exception v3
3066
3067 .line 3392
3068 .local v3, ioe:Ljava/io/IOException;
3069 sget-object v5, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
3070
3071 const-string v7, "File creation failed"
3072
3073 invoke-static {v5, v7, v3}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
3074
3075 move v5, v6
3076
3077 .line 3394
3078 goto :goto_0
3079.end method
3080
3081.method private generateFileName(ZLjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
3082 .locals 4
3083 .parameter "internal"
3084 .parameter "preferredExtension"
3085 .parameter "directoryName"
3086
3087 .prologue
3088 .line 3364
3089 invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
3090
3091 move-result-wide v1
3092
3093 invoke-static {v1, v2}, Ljava/lang/String;->valueOf(J)Ljava/lang/String;
3094
3095 move-result-object v0
3096
3097 .line 3366
3098 .local v0, name:Ljava/lang/String;
3099 if-eqz p1, :cond_0
3100
3101 .line 3367
3102 new-instance v1, Ljava/lang/UnsupportedOperationException;
3103
3104 const-string v2, "Writing to internal storage is not supported."
3105
3106 invoke-direct {v1, v2}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
3107
3108 throw v1
3109
3110 .line 3371
3111 :cond_0
3112 new-instance v1, Ljava/lang/StringBuilder;
3113
3114 invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
3115
3116 sget-object v2, Lcom/android/providers/media/MediaProvider;->mExternalStoragePaths:[Ljava/lang/String;
3117
3118 const/4 v3, 0x0
3119
3120 aget-object v2, v2, v3
3121
3122 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3123
3124 move-result-object v1
3125
3126 const-string v2, "/"
3127
3128 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3129
3130 move-result-object v1
3131
3132 invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3133
3134 move-result-object v1
3135
3136 const-string v2, "/"
3137
3138 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3139
3140 move-result-object v1
3141
3142 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3143
3144 move-result-object v1
3145
3146 invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3147
3148 move-result-object v1
3149
3150 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
3151
3152 move-result-object v1
3153
3154 return-object v1
3155.end method
3156
3157.method private static getCompressedAlbumArt(Landroid/content/Context;Ljava/lang/String;)[B
3158 .locals 13
3159 .parameter
3160 .parameter
3161
3162 .prologue
3163 const/4 v3, 0x3
3164
3165 const/4 v2, 0x2
3166
3167 const/4 v1, 0x1
3168
3169 const/4 v5, 0x0
3170
3171 .line 4019
3172 .line 4022
3173 :try_start_0
3174 new-instance v0, Ljava/io/File;
3175
3176 invoke-direct {v0, p1}, Ljava/io/File;-><init>(Ljava/lang/String;)V
3177
3178 .line 4023
3179 const/high16 v4, 0x1000
3180
3181 invoke-static {v0, v4}, Landroid/os/ParcelFileDescriptor;->open(Ljava/io/File;I)Landroid/os/ParcelFileDescriptor;
3182
3183 move-result-object v0
3184
3185 .line 4026
3186 new-instance v4, Landroid/media/MediaScanner;
3187
3188 invoke-direct {v4, p0}, Landroid/media/MediaScanner;-><init>(Landroid/content/Context;)V
3189
3190 .line 4027
3191 invoke-virtual {v0}, Landroid/os/ParcelFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;
3192
3193 move-result-object v6
3194
3195 invoke-virtual {v4, v6}, Landroid/media/MediaScanner;->extractAlbumArt(Ljava/io/FileDescriptor;)[B
3196 :try_end_0
3197 .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_2
3198
3199 move-result-object v6
3200
3201 .line 4028
3202 :try_start_1
3203 invoke-virtual {v0}, Landroid/os/ParcelFileDescriptor;->close()V
3204
3205 .line 4039
3206 if-nez v6, :cond_a
3207
3208 if-eqz p1, :cond_a
3209
3210 .line 4040
3211 const/16 v0, 0x2f
3212
3213 invoke-virtual {p1, v0}, Ljava/lang/String;->lastIndexOf(I)I
3214
3215 move-result v0
3216
3217 .line 4041
3218 if-lez v0, :cond_a
3219
3220 .line 4043
3221 const/4 v4, 0x0
3222
3223 invoke-virtual {p1, v4, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String;
3224
3225 move-result-object v8
3226
3227 .line 4044
3228 sget-object v0, Lcom/android/providers/media/MediaProvider;->mExternalStoragePaths:[Ljava/lang/String;
3229
3230 const/4 v4, 0x0
3231
3232 aget-object v0, v0, v4
3233
3234 .line 4045
3235 sget-object v4, Landroid/os/Environment;->DIRECTORY_DOWNLOADS:Ljava/lang/String;
3236
3237 invoke-static {v4}, Landroid/os/Environment;->getExternalStoragePublicDirectory(Ljava/lang/String;)Ljava/io/File;
3238
3239 move-result-object v4
3240
3241 invoke-virtual {v4}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
3242
3243 move-result-object v4
3244
3245 .line 4049
3246 sget-object v9, Lcom/android/providers/media/MediaProvider;->sFolderArtMap:Ljava/util/HashMap;
3247
3248 monitor-enter v9
3249 :try_end_1
3250 .catch Ljava/io/IOException; {:try_start_1 .. :try_end_1} :catch_0
3251
3252 .line 4050
3253 :try_start_2
3254 sget-object v7, Lcom/android/providers/media/MediaProvider;->sFolderArtMap:Ljava/util/HashMap;
3255
3256 invoke-virtual {v7, v8}, Ljava/util/HashMap;->containsKey(Ljava/lang/Object;)Z
3257
3258 move-result v7
3259
3260 if-eqz v7, :cond_1
3261
3262 .line 4051
3263 sget-object v0, Lcom/android/providers/media/MediaProvider;->sFolderArtMap:Ljava/util/HashMap;
3264
3265 invoke-virtual {v0, v8}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
3266
3267 move-result-object v0
3268
3269 check-cast v0, Ljava/lang/String;
3270
3271 .line 4087
3272 :goto_0
3273 monitor-exit v9
3274 :try_end_2
3275 .catchall {:try_start_2 .. :try_end_2} :catchall_0
3276
3277 .line 4089
3278 if-eqz v0, :cond_a
3279
3280 .line 4090
3281 :try_start_3
3282 new-instance v2, Ljava/io/File;
3283
3284 invoke-direct {v2, v8, v0}, Ljava/io/File;-><init>(Ljava/lang/String;Ljava/lang/String;)V
3285
3286 .line 4091
3287 invoke-virtual {v2}, Ljava/io/File;->exists()Z
3288 :try_end_3
3289 .catch Ljava/io/IOException; {:try_start_3 .. :try_end_3} :catch_0
3290
3291 move-result v0
3292
3293 if-eqz v0, :cond_a
3294
3295 .line 4094
3296 :try_start_4
3297 invoke-virtual {v2}, Ljava/io/File;->length()J
3298
3299 move-result-wide v0
3300
3301 long-to-int v0, v0
3302
3303 new-array v0, v0, [B
3304 :try_end_4
3305 .catchall {:try_start_4 .. :try_end_4} :catchall_1
3306 .catch Ljava/io/IOException; {:try_start_4 .. :try_end_4} :catch_1
3307
3308 .line 4095
3309 :try_start_5
3310 new-instance v1, Ljava/io/FileInputStream;
3311
3312 invoke-direct {v1, v2}, Ljava/io/FileInputStream;-><init>(Ljava/io/File;)V
3313 :try_end_5
3314 .catchall {:try_start_5 .. :try_end_5} :catchall_2
3315 .catch Ljava/io/IOException; {:try_start_5 .. :try_end_5} :catch_1
3316
3317 .line 4096
3318 :try_start_6
3319 invoke-virtual {v1, v0}, Ljava/io/FileInputStream;->read([B)I
3320 :try_end_6
3321 .catchall {:try_start_6 .. :try_end_6} :catchall_3
3322 .catch Ljava/io/IOException; {:try_start_6 .. :try_end_6} :catch_4
3323
3324 .line 4100
3325 if-eqz v1, :cond_0
3326
3327 .line 4101
3328 :try_start_7
3329 invoke-virtual {v1}, Ljava/io/FileInputStream;->close()V
3330 :try_end_7
3331 .catch Ljava/io/IOException; {:try_start_7 .. :try_end_7} :catch_3
3332
3333 :cond_0
3334 :goto_1
3335 move-object v5, v0
3336
3337 .line 4111
3338 :goto_2
3339 return-object v5
3340
3341 .line 4052
3342 :cond_1
3343 :try_start_8
3344 invoke-virtual {v8, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
3345
3346 move-result v0
3347
3348 if-nez v0, :cond_c
3349
3350 invoke-virtual {v8, v4}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
3351
3352 move-result v0
3353
3354 if-nez v0, :cond_c
3355
3356 .line 4054
3357 new-instance v0, Ljava/io/File;
3358
3359 invoke-direct {v0, v8}, Ljava/io/File;-><init>(Ljava/lang/String;)V
3360
3361 .line 4055
3362 invoke-virtual {v0}, Ljava/io/File;->list()[Ljava/lang/String;
3363
3364 move-result-object v10
3365
3366 .line 4056
3367 if-nez v10, :cond_2
3368
3369 .line 4057
3370 monitor-exit v9
3371
3372 goto :goto_2
3373
3374 .line 4087
3375 :catchall_0
3376 move-exception v0
3377
3378 monitor-exit v9
3379 :try_end_8
3380 .catchall {:try_start_8 .. :try_end_8} :catchall_0
3381
3382 :try_start_9
3383 throw v0
3384 :try_end_9
3385 .catch Ljava/io/IOException; {:try_start_9 .. :try_end_9} :catch_0
3386
3387 .line 4108
3388 :catch_0
3389 move-exception v0
3390
3391 move-object v0, v6
3392
3393 goto :goto_1
3394
3395 .line 4060
3396 :cond_2
3397 const/16 v4, 0x3e8
3398
3399 .line 4061
3400 :try_start_a
3401 array-length v0, v10
3402
3403 add-int/lit8 v0, v0, -0x1
3404
3405 move v7, v0
3406
3407 move v0, v4
3408
3409 move-object v4, v5
3410
3411 :goto_3
3412 if-ltz v7, :cond_b
3413
3414 .line 4062
3415 aget-object v11, v10, v7
3416
3417 invoke-virtual {v11}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;
3418
3419 move-result-object v11
3420
3421 .line 4063
3422 const-string v12, "albumart.jpg"
3423
3424 invoke-virtual {v11, v12}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
3425
3426 move-result v12
3427
3428 if-eqz v12, :cond_3
3429
3430 .line 4064
3431 aget-object v0, v10, v7
3432
3433 .line 4085
3434 :goto_4
3435 sget-object v1, Lcom/android/providers/media/MediaProvider;->sFolderArtMap:Ljava/util/HashMap;
3436
3437 invoke-virtual {v1, v8, v0}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
3438
3439 goto :goto_0
3440
3441 .line 4066
3442 :cond_3
3443 const-string v12, "albumart"
3444
3445 invoke-virtual {v11, v12}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
3446
3447 move-result v12
3448
3449 if-eqz v12, :cond_5
3450
3451 const-string v12, "large.jpg"
3452
3453 invoke-virtual {v11, v12}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
3454
3455 move-result v12
3456
3457 if-eqz v12, :cond_5
3458
3459 if-le v0, v1, :cond_5
3460
3461 .line 4069
3462 aget-object v0, v10, v7
3463
3464 move-object v4, v0
3465
3466 move v0, v1
3467
3468 .line 4061
3469 :cond_4
3470 :goto_5
3471 add-int/lit8 v7, v7, -0x1
3472
3473 goto :goto_3
3474
3475 .line 4071
3476 :cond_5
3477 const-string v12, "albumart"
3478
3479 invoke-virtual {v11, v12}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
3480
3481 move-result v12
3482
3483 if-eqz v12, :cond_6
3484
3485 const-string v12, ".jpg"
3486
3487 invoke-virtual {v11, v12}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
3488
3489 move-result v12
3490
3491 if-eqz v12, :cond_6
3492
3493 if-le v0, v2, :cond_6
3494
3495 .line 4074
3496 aget-object v0, v10, v7
3497
3498 move-object v4, v0
3499
3500 move v0, v2
3501
3502 .line 4075
3503 goto :goto_5
3504
3505 .line 4076
3506 :cond_6
3507 const-string v12, ".jpg"
3508
3509 invoke-virtual {v11, v12}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
3510
3511 move-result v12
3512
3513 if-eqz v12, :cond_7
3514
3515 if-le v0, v3, :cond_7
3516
3517 .line 4077
3518 aget-object v0, v10, v7
3519
3520 move-object v4, v0
3521
3522 move v0, v3
3523
3524 .line 4078
3525 goto :goto_5
3526
3527 .line 4079
3528 :cond_7
3529 const-string v12, ".png"
3530
3531 invoke-virtual {v11, v12}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
3532
3533 move-result v11
3534
3535 if-eqz v11, :cond_4
3536
3537 const/4 v11, 0x4
3538
3539 if-le v0, v11, :cond_4
3540
3541 .line 4080
3542 aget-object v4, v10, v7
3543 :try_end_a
3544 .catchall {:try_start_a .. :try_end_a} :catchall_0
3545
3546 .line 4081
3547 const/4 v0, 0x4
3548
3549 goto :goto_5
3550
3551 .line 4097
3552 :catch_1
3553 move-exception v0
3554
3555 move-object v0, v5
3556
3557 .line 4100
3558 :goto_6
3559 if-eqz v0, :cond_9
3560
3561 .line 4101
3562 :try_start_b
3563 invoke-virtual {v0}, Ljava/io/FileInputStream;->close()V
3564 :try_end_b
3565 .catch Ljava/io/IOException; {:try_start_b .. :try_end_b} :catch_2
3566
3567 move-object v0, v5
3568
3569 goto/16 :goto_1
3570
3571 .line 4100
3572 :catchall_1
3573 move-exception v0
3574
3575 :goto_7
3576 if-eqz v5, :cond_8
3577
3578 .line 4101
3579 :try_start_c
3580 invoke-virtual {v5}, Ljava/io/FileInputStream;->close()V
3581
3582 :cond_8
3583 throw v0
3584 :try_end_c
3585 .catch Ljava/io/IOException; {:try_start_c .. :try_end_c} :catch_0
3586
3587 .line 4108
3588 :catch_2
3589 move-exception v0
3590
3591 move-object v0, v5
3592
3593 goto/16 :goto_1
3594
3595 :catch_3
3596 move-exception v1
3597
3598 goto/16 :goto_1
3599
3600 .line 4100
3601 :catchall_2
3602 move-exception v1
3603
3604 move-object v6, v0
3605
3606 move-object v0, v1
3607
3608 goto :goto_7
3609
3610 :catchall_3
3611 move-exception v2
3612
3613 move-object v5, v1
3614
3615 move-object v6, v0
3616
3617 move-object v0, v2
3618
3619 goto :goto_7
3620
3621 .line 4097
3622 :catch_4
3623 move-exception v0
3624
3625 move-object v0, v1
3626
3627 goto :goto_6
3628
3629 :cond_9
3630 move-object v0, v5
3631
3632 goto/16 :goto_1
3633
3634 :cond_a
3635 move-object v0, v6
3636
3637 goto/16 :goto_1
3638
3639 :cond_b
3640 move-object v0, v4
3641
3642 goto :goto_4
3643
3644 :cond_c
3645 move-object v0, v5
3646
3647 goto/16 :goto_0
3648.end method
3649
3650.method private getDatabaseForUri(Landroid/net/Uri;)Lcom/android/providers/media/MediaProvider$DatabaseHelper;
3651 .locals 4
3652 .parameter "uri"
3653
3654 .prologue
3655 .line 4440
3656 iget-object v1, p0, Lcom/android/providers/media/MediaProvider;->mDatabases:Ljava/util/HashMap;
3657
3658 monitor-enter v1
3659
3660 .line 4441
3661 :try_start_0
3662 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
3663
3664 move-result-object v0
3665
3666 invoke-interface {v0}, Ljava/util/List;->size()I
3667
3668 move-result v0
3669
3670 const/4 v2, 0x1
3671
3672 if-le v0, v2, :cond_0
3673
3674 .line 4442
3675 iget-object v0, p0, Lcom/android/providers/media/MediaProvider;->mDatabases:Ljava/util/HashMap;
3676
3677 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
3678
3679 move-result-object v2
3680
3681 const/4 v3, 0x0
3682
3683 invoke-interface {v2, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
3684
3685 move-result-object v2
3686
3687 invoke-virtual {v0, v2}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
3688
3689 move-result-object v0
3690
3691 check-cast v0, Lcom/android/providers/media/MediaProvider$DatabaseHelper;
3692
3693 monitor-exit v1
3694
3695 .line 4445
3696 :goto_0
3697 return-object v0
3698
3699 .line 4444
3700 :cond_0
3701 monitor-exit v1
3702
3703 .line 4445
3704 const/4 v0, 0x0
3705
3706 goto :goto_0
3707
3708 .line 4444
3709 :catchall_0
3710 move-exception v0
3711
3712 monitor-exit v1
3713 :try_end_0
3714 .catchall {:try_start_0 .. :try_end_0} :catchall_0
3715
3716 throw v0
3717.end method
3718
3719.method private getKeyIdForName(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/util/HashMap;Landroid/net/Uri;)J
3720 .locals 13
3721 .parameter
3722 .parameter
3723 .parameter
3724 .parameter
3725 .parameter
3726 .parameter
3727 .parameter
3728 .parameter
3729 .parameter
3730 .parameter
3731 .parameter
3732 .annotation system Ldalvik/annotation/Signature;
3733 value = {
3734 "(",
3735 "Landroid/database/sqlite/SQLiteDatabase;",
3736 "Ljava/lang/String;",
3737 "Ljava/lang/String;",
3738 "Ljava/lang/String;",
3739 "Ljava/lang/String;",
3740 "Ljava/lang/String;",
3741 "Ljava/lang/String;",
3742 "I",
3743 "Ljava/lang/String;",
3744 "Ljava/util/HashMap",
3745 "<",
3746 "Ljava/lang/String;",
3747 "Ljava/lang/Long;",
3748 ">;",
3749 "Landroid/net/Uri;",
3750 ")J"
3751 }
3752 .end annotation
3753
3754 .prologue
3755 .line 4302
3756 if-eqz p5, :cond_0
3757
3758 invoke-virtual/range {p5 .. p5}, Ljava/lang/String;->length()I
3759
3760 move-result v2
3761
3762 if-nez v2, :cond_1
3763
3764 .line 4303
3765 :cond_0
3766 const-string p5, "<unknown>"
3767
3768 .line 4305
3769 :cond_1
3770 invoke-static/range {p5 .. p5}, Landroid/provider/MediaStore$Audio;->keyFor(Ljava/lang/String;)Ljava/lang/String;
3771
3772 move-result-object v2
3773
3774 .line 4307
3775 if-nez v2, :cond_3
3776
3777 .line 4309
3778 sget-object v2, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
3779
3780 const-string v3, "null key"
3781
3782 new-instance v4, Ljava/lang/Exception;
3783
3784 invoke-direct {v4}, Ljava/lang/Exception;-><init>()V
3785
3786 invoke-static {v2, v3, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
3787
3788 .line 4310
3789 const-wide/16 v2, -0x1
3790
3791 .line 4386
3792 :cond_2
3793 :goto_0
3794 return-wide v2
3795
3796 .line 4313
3797 :cond_3
3798 const-string v3, "albums"
3799
3800 invoke-virtual {p2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
3801
3802 move-result v11
3803
3804 .line 4314
3805 const-string v3, "<unknown>"
3806
3807 move-object/from16 v0, p5
3808
3809 invoke-virtual {v3, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
3810
3811 move-result v12
3812
3813 .line 4324
3814 if-eqz v11, :cond_8
3815
3816 .line 4325
3817 new-instance v3, Ljava/lang/StringBuilder;
3818
3819 invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
3820
3821 invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3822
3823 move-result-object v2
3824
3825 move/from16 v0, p8
3826
3827 invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
3828
3829 move-result-object v2
3830
3831 invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
3832
3833 move-result-object v2
3834
3835 .line 4326
3836 if-eqz v12, :cond_8
3837
3838 .line 4327
3839 new-instance v3, Ljava/lang/StringBuilder;
3840
3841 invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
3842
3843 invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3844
3845 move-result-object v2
3846
3847 move-object/from16 v0, p9
3848
3849 invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3850
3851 move-result-object v2
3852
3853 invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
3854
3855 move-result-object v2
3856
3857 move-object v10, v2
3858
3859 .line 4331
3860 :goto_1
3861 const/4 v2, 0x1
3862
3863 new-array v6, v2, [Ljava/lang/String;
3864
3865 const/4 v2, 0x0
3866
3867 aput-object v10, v6, v2
3868
3869 .line 4332
3870 const/4 v4, 0x0
3871
3872 new-instance v2, Ljava/lang/StringBuilder;
3873
3874 invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
3875
3876 move-object/from16 v0, p3
3877
3878 invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3879
3880 move-result-object v2
3881
3882 const-string v3, "=?"
3883
3884 invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3885
3886 move-result-object v2
3887
3888 invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
3889
3890 move-result-object v5
3891
3892 const/4 v7, 0x0
3893
3894 const/4 v8, 0x0
3895
3896 const/4 v9, 0x0
3897
3898 move-object v2, p1
3899
3900 move-object v3, p2
3901
3902 invoke-virtual/range {v2 .. v9}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
3903
3904 move-result-object v4
3905
3906 .line 4335
3907 :try_start_0
3908 invoke-interface {v4}, Landroid/database/Cursor;->getCount()I
3909
3910 move-result v2
3911
3912 packed-switch v2, :pswitch_data_0
3913
3914 .line 4375
3915 sget-object v2, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
3916
3917 new-instance v3, Ljava/lang/StringBuilder;
3918
3919 invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
3920
3921 const-string v5, "Multiple entries in table "
3922
3923 invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3924
3925 move-result-object v3
3926
3927 invoke-virtual {v3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3928
3929 move-result-object v3
3930
3931 const-string v5, " for key "
3932
3933 invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3934
3935 move-result-object v3
3936
3937 invoke-virtual {v3, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3938
3939 move-result-object v3
3940
3941 invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
3942
3943 move-result-object v3
3944
3945 invoke-static {v2, v3}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
3946 :try_end_0
3947 .catchall {:try_start_0 .. :try_end_0} :catchall_0
3948
3949 .line 4376
3950 const-wide/16 v2, -0x1
3951
3952 .line 4380
3953 :cond_4
3954 :goto_2
3955 if-eqz v4, :cond_5
3956
3957 invoke-interface {v4}, Landroid/database/Cursor;->close()V
3958
3959 .line 4383
3960 :cond_5
3961 if-eqz p10, :cond_2
3962
3963 if-nez v12, :cond_2
3964
3965 .line 4384
3966 invoke-static {v2, v3}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
3967
3968 move-result-object v4
3969
3970 move-object/from16 v0, p10
3971
3972 move-object/from16 v1, p6
3973
3974 invoke-virtual {v0, v1, v4}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
3975
3976 goto/16 :goto_0
3977
3978 .line 4338
3979 :pswitch_0
3980 :try_start_1
3981 new-instance v2, Landroid/content/ContentValues;
3982
3983 invoke-direct {v2}, Landroid/content/ContentValues;-><init>()V
3984
3985 .line 4339
3986 move-object/from16 v0, p3
3987
3988 invoke-virtual {v2, v0, v10}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
3989
3990 .line 4340
3991 move-object/from16 v0, p4
3992
3993 move-object/from16 v1, p5
3994
3995 invoke-virtual {v2, v0, v1}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
3996
3997 .line 4341
3998 const-string v3, "duration"
3999
4000 invoke-virtual {p1, p2, v3, v2}, Landroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
4001
4002 move-result-wide v2
4003
4004 .line 4342
4005 if-eqz p7, :cond_6
4006
4007 if-eqz v11, :cond_6
4008
4009 if-nez v12, :cond_6
4010
4011 .line 4344
4012 move-object/from16 v0, p7
4013
4014 invoke-direct {p0, p1, v0, v2, v3}, Lcom/android/providers/media/MediaProvider;->makeThumbAsync(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;J)V
4015
4016 .line 4346
4017 :cond_6
4018 const-wide/16 v5, 0x0
4019
4020 cmp-long v5, v2, v5
4021
4022 if-lez v5, :cond_4
4023
4024 .line 4347
4025 invoke-virtual/range {p11 .. p11}, Landroid/net/Uri;->toString()Ljava/lang/String;
4026
4027 move-result-object v5
4028
4029 const/16 v6, 0x10
4030
4031 const/16 v7, 0x18
4032
4033 invoke-virtual {v5, v6, v7}, Ljava/lang/String;->substring(II)Ljava/lang/String;
4034
4035 move-result-object v5
4036
4037 .line 4348
4038 new-instance v6, Ljava/lang/StringBuilder;
4039
4040 invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
4041
4042 const-string v7, "content://media/"
4043
4044 invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4045
4046 move-result-object v6
4047
4048 invoke-virtual {v6, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4049
4050 move-result-object v5
4051
4052 const-string v6, "/audio/"
4053
4054 invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4055
4056 move-result-object v5
4057
4058 invoke-virtual {v5, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4059
4060 move-result-object v5
4061
4062 const-string v6, "/"
4063
4064 invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4065
4066 move-result-object v5
4067
4068 invoke-virtual {v5, v2, v3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
4069
4070 move-result-object v5
4071
4072 invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
4073
4074 move-result-object v5
4075
4076 invoke-static {v5}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
4077
4078 move-result-object v5
4079
4080 .line 4349
4081 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
4082
4083 move-result-object v6
4084
4085 invoke-virtual {v6}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
4086
4087 move-result-object v6
4088
4089 const/4 v7, 0x0
4090
4091 invoke-virtual {v6, v5, v7}, Landroid/content/ContentResolver;->notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;)V
4092 :try_end_1
4093 .catchall {:try_start_1 .. :try_end_1} :catchall_0
4094
4095 goto/16 :goto_2
4096
4097 .line 4380
4098 :catchall_0
4099 move-exception v2
4100
4101 if-eqz v4, :cond_7
4102
4103 invoke-interface {v4}, Landroid/database/Cursor;->close()V
4104
4105 :cond_7
4106 throw v2
4107
4108 .line 4355
4109 :pswitch_1
4110 :try_start_2
4111 invoke-interface {v4}, Landroid/database/Cursor;->moveToFirst()Z
4112
4113 .line 4356
4114 const/4 v2, 0x0
4115
4116 invoke-interface {v4, v2}, Landroid/database/Cursor;->getLong(I)J
4117
4118 move-result-wide v2
4119
4120 .line 4360
4121 const/4 v5, 0x2
4122
4123 invoke-interface {v4, v5}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
4124
4125 move-result-object v5
4126
4127 .line 4361
4128 move-object/from16 v0, p5
4129
4130 invoke-virtual {p0, v0, v5}, Lcom/android/providers/media/MediaProvider;->makeBestName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
4131
4132 move-result-object v6
4133
4134 .line 4362
4135 invoke-virtual {v6, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
4136
4137 move-result v5
4138
4139 if-nez v5, :cond_4
4140
4141 .line 4364
4142 new-instance v5, Landroid/content/ContentValues;
4143
4144 invoke-direct {v5}, Landroid/content/ContentValues;-><init>()V
4145
4146 .line 4365
4147 move-object/from16 v0, p4
4148
4149 invoke-virtual {v5, v0, v6}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
4150
4151 .line 4366
4152 new-instance v6, Ljava/lang/StringBuilder;
4153
4154 invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
4155
4156 const-string v7, "rowid="
4157
4158 invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4159
4160 move-result-object v6
4161
4162 long-to-int v7, v2
4163
4164 invoke-static {v7}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
4165
4166 move-result-object v7
4167
4168 invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4169
4170 move-result-object v6
4171
4172 invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
4173
4174 move-result-object v6
4175
4176 const/4 v7, 0x0
4177
4178 invoke-virtual {p1, p2, v5, v6, v7}, Landroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
4179
4180 .line 4367
4181 invoke-virtual/range {p11 .. p11}, Landroid/net/Uri;->toString()Ljava/lang/String;
4182
4183 move-result-object v5
4184
4185 const/16 v6, 0x10
4186
4187 const/16 v7, 0x18
4188
4189 invoke-virtual {v5, v6, v7}, Ljava/lang/String;->substring(II)Ljava/lang/String;
4190
4191 move-result-object v5
4192
4193 .line 4368
4194 new-instance v6, Ljava/lang/StringBuilder;
4195
4196 invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
4197
4198 const-string v7, "content://media/"
4199
4200 invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4201
4202 move-result-object v6
4203
4204 invoke-virtual {v6, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4205
4206 move-result-object v5
4207
4208 const-string v6, "/audio/"
4209
4210 invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4211
4212 move-result-object v5
4213
4214 invoke-virtual {v5, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4215
4216 move-result-object v5
4217
4218 const-string v6, "/"
4219
4220 invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4221
4222 move-result-object v5
4223
4224 invoke-virtual {v5, v2, v3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
4225
4226 move-result-object v5
4227
4228 invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
4229
4230 move-result-object v5
4231
4232 invoke-static {v5}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
4233
4234 move-result-object v5
4235
4236 .line 4369
4237 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
4238
4239 move-result-object v6
4240
4241 invoke-virtual {v6}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
4242
4243 move-result-object v6
4244
4245 const/4 v7, 0x0
4246
4247 invoke-virtual {v6, v5, v7}, Landroid/content/ContentResolver;->notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;)V
4248 :try_end_2
4249 .catchall {:try_start_2 .. :try_end_2} :catchall_0
4250
4251 goto/16 :goto_2
4252
4253 :cond_8
4254 move-object v10, v2
4255
4256 goto/16 :goto_1
4257
4258 .line 4335
4259 nop
4260
4261 :pswitch_data_0
4262 .packed-switch 0x0
4263 :pswitch_0
4264 :pswitch_1
4265 .end packed-switch
4266.end method
4267
4268.method private getObjectReferences(Landroid/database/sqlite/SQLiteDatabase;I)Landroid/database/Cursor;
4269 .locals 12
4270 .parameter "db"
4271 .parameter "handle"
4272
4273 .prologue
4274 const/4 v0, 0x1
4275
4276 const/4 v6, 0x0
4277
4278 const/4 v5, 0x0
4279
4280 .line 2973
4281 const-string v1, "files"
4282
4283 sget-object v2, Lcom/android/providers/media/MediaProvider;->mMediaTableColumns:[Ljava/lang/String;
4284
4285 const-string v3, "_id=?"
4286
4287 new-array v4, v0, [Ljava/lang/String;
4288
4289 invoke-static {p2}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
4290
4291 move-result-object v0
4292
4293 aput-object v0, v4, v6
4294
4295 move-object v0, p1
4296
4297 move-object v6, v5
4298
4299 move-object v7, v5
4300
4301 invoke-virtual/range {v0 .. v7}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
4302
4303 move-result-object v8
4304
4305 .line 2977
4306 .local v8, c:Landroid/database/Cursor;
4307 if-eqz v8, :cond_2
4308
4309 :try_start_0
4310 invoke-interface {v8}, Landroid/database/Cursor;->moveToNext()Z
4311
4312 move-result v0
4313
4314 if-eqz v0, :cond_2
4315
4316 .line 2978
4317 const/4 v0, 0x0
4318
4319 invoke-interface {v8, v0}, Landroid/database/Cursor;->getLong(I)J
4320
4321 move-result-wide v10
4322
4323 .line 2979
4324 .local v10, playlistId:J
4325 const/4 v0, 0x1
4326
4327 invoke-interface {v8, v0}, Landroid/database/Cursor;->getInt(I)I
4328 :try_end_0
4329 .catchall {:try_start_0 .. :try_end_0} :catchall_0
4330
4331 move-result v9
4332
4333 .line 2980
4334 .local v9, mediaType:I
4335 const/4 v0, 0x4
4336
4337 if-eq v9, v0, :cond_1
4338
4339 .line 2988
4340 if-eqz v8, :cond_0
4341
4342 .line 2989
4343 invoke-interface {v8}, Landroid/database/Cursor;->close()V
4344
4345 .line 2992
4346 .end local v9 #mediaType:I
4347 .end local v10 #playlistId:J
4348 :cond_0
4349 :goto_0
4350 return-object v5
4351
4352 .line 2984
4353 .restart local v9 #mediaType:I
4354 .restart local v10 #playlistId:J
4355 :cond_1
4356 :try_start_1
4357 const-string v0, "SELECT audio_id FROM audio_playlists_map WHERE playlist_id=? ORDER BY play_order"
4358
4359 const/4 v1, 0x1
4360
4361 new-array v1, v1, [Ljava/lang/String;
4362
4363 const/4 v2, 0x0
4364
4365 invoke-static {v10, v11}, Ljava/lang/Long;->toString(J)Ljava/lang/String;
4366
4367 move-result-object v3
4368
4369 aput-object v3, v1, v2
4370
4371 invoke-virtual {p1, v0, v1}, Landroid/database/sqlite/SQLiteDatabase;->rawQuery(Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor;
4372 :try_end_1
4373 .catchall {:try_start_1 .. :try_end_1} :catchall_0
4374
4375 move-result-object v5
4376
4377 .line 2988
4378 if-eqz v8, :cond_0
4379
4380 .line 2989
4381 invoke-interface {v8}, Landroid/database/Cursor;->close()V
4382
4383 goto :goto_0
4384
4385 .line 2988
4386 .end local v9 #mediaType:I
4387 .end local v10 #playlistId:J
4388 :cond_2
4389 if-eqz v8, :cond_0
4390
4391 .line 2989
4392 invoke-interface {v8}, Landroid/database/Cursor;->close()V
4393
4394 goto :goto_0
4395
4396 .line 2988
4397 :catchall_0
4398 move-exception v0
4399
4400 if-eqz v8, :cond_3
4401
4402 .line 2989
4403 invoke-interface {v8}, Landroid/database/Cursor;->close()V
4404
4405 :cond_3
4406 throw v0
4407.end method
4408
4409.method private getParent(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)J
4410 .locals 18
4411 .parameter "db"
4412 .parameter "path"
4413
4414 .prologue
4415 .line 2624
4416 const/16 v3, 0x2f
4417
4418 move-object/from16 v0, p2
4419
4420 invoke-virtual {v0, v3}, Ljava/lang/String;->lastIndexOf(I)I
4421
4422 move-result v16
4423
4424 .line 2625
4425 .local v16, lastSlash:I
4426 if-lez v16, :cond_8
4427
4428 .line 2626
4429 const/4 v3, 0x0
4430
4431 move-object/from16 v0, p2
4432
4433 move/from16 v1, v16
4434
4435 invoke-virtual {v0, v3, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String;
4436
4437 move-result-object v17
4438
4439 .line 2627
4440 .local v17, parentPath:Ljava/lang/String;
4441 const/4 v13, 0x0
4442
4443 .local v13, i:I
4444 :goto_0
4445 sget-object v3, Lcom/android/providers/media/MediaProvider;->mExternalStoragePaths:[Ljava/lang/String;
4446
4447 array-length v3, v3
4448
4449 if-ge v13, v3, :cond_2
4450
4451 .line 2628
4452 sget-object v3, Lcom/android/providers/media/MediaProvider;->mExternalStoragePaths:[Ljava/lang/String;
4453
4454 aget-object v3, v3, v13
4455
4456 move-object/from16 v0, v17
4457
4458 invoke-virtual {v0, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
4459
4460 move-result v3
4461
4462 if-eqz v3, :cond_1
4463
4464 .line 2629
4465 const-wide/16 v14, 0x0
4466
4467 .line 2665
4468 .end local v13 #i:I
4469 .end local v17 #parentPath:Ljava/lang/String;
4470 :cond_0
4471 :goto_1
4472 return-wide v14
4473
4474 .line 2627
4475 .restart local v13 #i:I
4476 .restart local v17 #parentPath:Ljava/lang/String;
4477 :cond_1
4478 add-int/lit8 v13, v13, 0x1
4479
4480 goto :goto_0
4481
4482 .line 2632
4483 :cond_2
4484 move-object/from16 v0, p0
4485
4486 iget-object v3, v0, Lcom/android/providers/media/MediaProvider;->mDirectoryCache:Ljava/util/HashMap;
4487
4488 move-object/from16 v0, v17
4489
4490 invoke-virtual {v3, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
4491
4492 move-result-object v12
4493
4494 check-cast v12, Ljava/lang/Long;
4495
4496 .line 2633
4497 .local v12, cid:Ljava/lang/Long;
4498 if-eqz v12, :cond_3
4499
4500 .line 2635
4501 invoke-virtual {v12}, Ljava/lang/Long;->longValue()J
4502
4503 move-result-wide v14
4504
4505 goto :goto_1
4506
4507 .line 2642
4508 :cond_3
4509 move-object/from16 v0, p0
4510
4511 iget-boolean v3, v0, Lcom/android/providers/media/MediaProvider;->mCaseInsensitivePaths:Z
4512
4513 if-eqz v3, :cond_5
4514
4515 const-string v6, "_data LIKE ?AND format=12289"
4516
4517 .line 2646
4518 .local v6, selection:Ljava/lang/String;
4519 :goto_2
4520 const/4 v3, 0x1
4521
4522 new-array v7, v3, [Ljava/lang/String;
4523
4524 const/4 v3, 0x0
4525
4526 aput-object v17, v7, v3
4527
4528 .line 2647
4529 .local v7, selargs:[Ljava/lang/String;
4530 const-string v4, "files"
4531
4532 sget-object v5, Lcom/android/providers/media/MediaProvider;->sIdOnlyColumn:[Ljava/lang/String;
4533
4534 const/4 v8, 0x0
4535
4536 const/4 v9, 0x0
4537
4538 const/4 v10, 0x0
4539
4540 move-object/from16 v3, p1
4541
4542 invoke-virtual/range {v3 .. v10}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
4543
4544 move-result-object v11
4545
4546 .line 2650
4547 .local v11, c:Landroid/database/Cursor;
4548 if-eqz v11, :cond_4
4549
4550 :try_start_0
4551 invoke-interface {v11}, Landroid/database/Cursor;->getCount()I
4552
4553 move-result v3
4554
4555 if-nez v3, :cond_6
4556
4557 .line 2652
4558 :cond_4
4559 move-object/from16 v0, p0
4560
4561 move-object/from16 v1, p1
4562
4563 move-object/from16 v2, v17
4564
4565 invoke-direct {v0, v1, v2}, Lcom/android/providers/media/MediaProvider;->insertDirectory(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)J
4566
4567 move-result-wide v14
4568
4569 .line 2659
4570 .local v14, id:J
4571 :goto_3
4572 move-object/from16 v0, p0
4573
4574 iget-object v3, v0, Lcom/android/providers/media/MediaProvider;->mDirectoryCache:Ljava/util/HashMap;
4575
4576 invoke-static {v14, v15}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
4577
4578 move-result-object v4
4579
4580 move-object/from16 v0, v17
4581
4582 invoke-virtual {v3, v0, v4}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
4583 :try_end_0
4584 .catchall {:try_start_0 .. :try_end_0} :catchall_0
4585
4586 .line 2662
4587 if-eqz v11, :cond_0
4588
4589 invoke-interface {v11}, Landroid/database/Cursor;->close()V
4590
4591 goto :goto_1
4592
4593 .line 2642
4594 .end local v6 #selection:Ljava/lang/String;
4595 .end local v7 #selargs:[Ljava/lang/String;
4596 .end local v11 #c:Landroid/database/Cursor;
4597 .end local v14 #id:J
4598 :cond_5
4599 const-string v6, "_data=?"
4600
4601 goto :goto_2
4602
4603 .line 2655
4604 .restart local v6 #selection:Ljava/lang/String;
4605 .restart local v7 #selargs:[Ljava/lang/String;
4606 .restart local v11 #c:Landroid/database/Cursor;
4607 :cond_6
4608 :try_start_1
4609 invoke-interface {v11}, Landroid/database/Cursor;->moveToFirst()Z
4610
4611 .line 2656
4612 const/4 v3, 0x0
4613
4614 invoke-interface {v11, v3}, Landroid/database/Cursor;->getLong(I)J
4615 :try_end_1
4616 .catchall {:try_start_1 .. :try_end_1} :catchall_0
4617
4618 move-result-wide v14
4619
4620 .restart local v14 #id:J
4621 goto :goto_3
4622
4623 .line 2662
4624 .end local v14 #id:J
4625 :catchall_0
4626 move-exception v3
4627
4628 if-eqz v11, :cond_7
4629
4630 invoke-interface {v11}, Landroid/database/Cursor;->close()V
4631
4632 :cond_7
4633 throw v3
4634
4635 .line 2665
4636 .end local v6 #selection:Ljava/lang/String;
4637 .end local v7 #selargs:[Ljava/lang/String;
4638 .end local v11 #c:Landroid/database/Cursor;
4639 .end local v12 #cid:Ljava/lang/Long;
4640 .end local v13 #i:I
4641 .end local v17 #parentPath:Ljava/lang/String;
4642 :cond_8
4643 const-wide/16 v14, 0x0
4644
4645 goto :goto_1
4646.end method
4647
4648.method private static getParent_for_upgrade(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)J
4649 .locals 16
4650 .parameter "db"
4651 .parameter "path"
4652
4653 .prologue
4654 .line 2670
4655 const/16 v1, 0x2f
4656
4657 move-object/from16 v0, p1
4658
4659 invoke-virtual {v0, v1}, Ljava/lang/String;->lastIndexOf(I)I
4660
4661 move-result v14
4662
4663 .line 2671
4664 .local v14, lastSlash:I
4665 if-lez v14, :cond_7
4666
4667 .line 2672
4668 const/4 v1, 0x0
4669
4670 move-object/from16 v0, p1
4671
4672 invoke-virtual {v0, v1, v14}, Ljava/lang/String;->substring(II)Ljava/lang/String;
4673
4674 move-result-object v15
4675
4676 .line 2673
4677 .local v15, parentPath:Ljava/lang/String;
4678 const/4 v11, 0x0
4679
4680 .local v11, i:I
4681 :goto_0
4682 sget-object v1, Lcom/android/providers/media/MediaProvider;->mExternalStoragePaths_for_upgrade:[Ljava/lang/String;
4683
4684 array-length v1, v1
4685
4686 if-ge v11, v1, :cond_2
4687
4688 .line 2674
4689 sget-object v1, Lcom/android/providers/media/MediaProvider;->mExternalStoragePaths_for_upgrade:[Ljava/lang/String;
4690
4691 aget-object v1, v1, v11
4692
4693 invoke-virtual {v15, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
4694
4695 move-result v1
4696
4697 if-eqz v1, :cond_1
4698
4699 .line 2675
4700 const-wide/16 v12, 0x0
4701
4702 .line 2711
4703 .end local v11 #i:I
4704 .end local v15 #parentPath:Ljava/lang/String;
4705 :cond_0
4706 :goto_1
4707 return-wide v12
4708
4709 .line 2673
4710 .restart local v11 #i:I
4711 .restart local v15 #parentPath:Ljava/lang/String;
4712 :cond_1
4713 add-int/lit8 v11, v11, 0x1
4714
4715 goto :goto_0
4716
4717 .line 2678
4718 :cond_2
4719 sget-object v1, Lcom/android/providers/media/MediaProvider;->mStaticDirectoryCache:Ljava/util/HashMap;
4720
4721 invoke-virtual {v1, v15}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
4722
4723 move-result-object v10
4724
4725 check-cast v10, Ljava/lang/Long;
4726
4727 .line 2679
4728 .local v10, cid:Ljava/lang/Long;
4729 if-eqz v10, :cond_3
4730
4731 .line 2681
4732 invoke-virtual {v10}, Ljava/lang/Long;->longValue()J
4733
4734 move-result-wide v12
4735
4736 goto :goto_1
4737
4738 .line 2688
4739 :cond_3
4740 const-string v4, "_data LIKE ?AND format=12289"
4741
4742 .line 2691
4743 .local v4, selection:Ljava/lang/String;
4744 const/4 v1, 0x1
4745
4746 new-array v5, v1, [Ljava/lang/String;
4747
4748 const/4 v1, 0x0
4749
4750 aput-object v15, v5, v1
4751
4752 .line 2692
4753 .local v5, selargs:[Ljava/lang/String;
4754 const-string v2, "files"
4755
4756 sget-object v3, Lcom/android/providers/media/MediaProvider;->sIdOnlyColumn:[Ljava/lang/String;
4757
4758 const/4 v6, 0x0
4759
4760 const/4 v7, 0x0
4761
4762 const/4 v8, 0x0
4763
4764 move-object/from16 v1, p0
4765
4766 invoke-virtual/range {v1 .. v8}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
4767
4768 move-result-object v9
4769
4770 .line 2695
4771 .local v9, c:Landroid/database/Cursor;
4772 if-eqz v9, :cond_4
4773
4774 :try_start_0
4775 invoke-interface {v9}, Landroid/database/Cursor;->getCount()I
4776
4777 move-result v1
4778
4779 if-nez v1, :cond_5
4780
4781 .line 2697
4782 :cond_4
4783 move-object/from16 v0, p0
4784
4785 invoke-static {v0, v15}, Lcom/android/providers/media/MediaProvider;->insertDirectory_for_upgrade(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)J
4786
4787 move-result-wide v12
4788
4789 .line 2705
4790 .local v12, id:J
4791 :goto_2
4792 sget-object v1, Lcom/android/providers/media/MediaProvider;->mStaticDirectoryCache:Ljava/util/HashMap;
4793
4794 invoke-static {v12, v13}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
4795
4796 move-result-object v2
4797
4798 invoke-virtual {v1, v15, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
4799 :try_end_0
4800 .catchall {:try_start_0 .. :try_end_0} :catchall_0
4801
4802 .line 2708
4803 if-eqz v9, :cond_0
4804
4805 invoke-interface {v9}, Landroid/database/Cursor;->close()V
4806
4807 goto :goto_1
4808
4809 .line 2700
4810 .end local v12 #id:J
4811 :cond_5
4812 :try_start_1
4813 invoke-interface {v9}, Landroid/database/Cursor;->moveToFirst()Z
4814
4815 .line 2702
4816 const/4 v1, 0x0
4817
4818 invoke-interface {v9, v1}, Landroid/database/Cursor;->getLong(I)J
4819 :try_end_1
4820 .catchall {:try_start_1 .. :try_end_1} :catchall_0
4821
4822 move-result-wide v12
4823
4824 .restart local v12 #id:J
4825 goto :goto_2
4826
4827 .line 2708
4828 .end local v12 #id:J
4829 :catchall_0
4830 move-exception v1
4831
4832 if-eqz v9, :cond_6
4833
4834 invoke-interface {v9}, Landroid/database/Cursor;->close()V
4835
4836 :cond_6
4837 throw v1
4838
4839 .line 2711
4840 .end local v4 #selection:Ljava/lang/String;
4841 .end local v5 #selargs:[Ljava/lang/String;
4842 .end local v9 #c:Landroid/database/Cursor;
4843 .end local v10 #cid:Ljava/lang/Long;
4844 .end local v11 #i:I
4845 .end local v15 #parentPath:Ljava/lang/String;
4846 :cond_7
4847 const-wide/16 v12, 0x0
4848
4849 goto :goto_1
4850.end method
4851
4852.method private getStorageId(Ljava/lang/String;)I
4853 .locals 5
4854 .parameter "path"
4855
4856 .prologue
4857 .line 2716
4858 const/4 v0, 0x0
4859
4860 .local v0, i:I
4861 :goto_0
4862 sget-object v3, Lcom/android/providers/media/MediaProvider;->mExternalStoragePaths:[Ljava/lang/String;
4863
4864 array-length v3, v3
4865
4866 if-ge v0, v3, :cond_2
4867
4868 .line 2717
4869 sget-object v3, Lcom/android/providers/media/MediaProvider;->mExternalStoragePaths:[Ljava/lang/String;
4870
4871 aget-object v2, v3, v0
4872
4873 .line 2718
4874 .local v2, test:Ljava/lang/String;
4875 invoke-virtual {p1, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
4876
4877 move-result v3
4878
4879 if-eqz v3, :cond_1
4880
4881 .line 2719
4882 invoke-virtual {v2}, Ljava/lang/String;->length()I
4883
4884 move-result v1
4885
4886 .line 2720
4887 .local v1, length:I
4888 invoke-virtual {p1}, Ljava/lang/String;->length()I
4889
4890 move-result v3
4891
4892 if-eq v3, v1, :cond_0
4893
4894 invoke-virtual {p1, v1}, Ljava/lang/String;->charAt(I)C
4895
4896 move-result v3
4897
4898 const/16 v4, 0x2f
4899
4900 if-ne v3, v4, :cond_1
4901
4902 .line 2721
4903 :cond_0
4904 invoke-static {v0}, Landroid/mtp/MtpStorage;->getStorageId(I)I
4905
4906 move-result v3
4907
4908 .line 2726
4909 .end local v1 #length:I
4910 .end local v2 #test:Ljava/lang/String;
4911 :goto_1
4912 return v3
4913
4914 .line 2716
4915 .restart local v2 #test:Ljava/lang/String;
4916 :cond_1
4917 add-int/lit8 v0, v0, 0x1
4918
4919 goto :goto_0
4920
4921 .line 2726
4922 .end local v2 #test:Ljava/lang/String;
4923 :cond_2
4924 const/4 v3, 0x0
4925
4926 invoke-static {v3}, Landroid/mtp/MtpStorage;->getStorageId(I)I
4927
4928 move-result v3
4929
4930 goto :goto_1
4931.end method
4932
4933.method private static getStorageId_for_upgrade(Ljava/lang/String;)I
4934 .locals 5
4935 .parameter "path"
4936
4937 .prologue
4938 .line 2730
4939 const/4 v0, 0x0
4940
4941 .local v0, i:I
4942 :goto_0
4943 sget-object v3, Lcom/android/providers/media/MediaProvider;->mExternalStoragePaths_for_upgrade:[Ljava/lang/String;
4944
4945 array-length v3, v3
4946
4947 if-ge v0, v3, :cond_2
4948
4949 .line 2731
4950 sget-object v3, Lcom/android/providers/media/MediaProvider;->mExternalStoragePaths_for_upgrade:[Ljava/lang/String;
4951
4952 aget-object v2, v3, v0
4953
4954 .line 2732
4955 .local v2, test:Ljava/lang/String;
4956 invoke-virtual {p0, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
4957
4958 move-result v3
4959
4960 if-eqz v3, :cond_1
4961
4962 .line 2733
4963 invoke-virtual {v2}, Ljava/lang/String;->length()I
4964
4965 move-result v1
4966
4967 .line 2734
4968 .local v1, length:I
4969 invoke-virtual {p0}, Ljava/lang/String;->length()I
4970
4971 move-result v3
4972
4973 if-eq v3, v1, :cond_0
4974
4975 invoke-virtual {p0, v1}, Ljava/lang/String;->charAt(I)C
4976
4977 move-result v3
4978
4979 const/16 v4, 0x2f
4980
4981 if-ne v3, v4, :cond_1
4982
4983 .line 2735
4984 :cond_0
4985 invoke-static {v0}, Landroid/mtp/MtpStorage;->getStorageId(I)I
4986
4987 move-result v3
4988
4989 .line 2740
4990 .end local v1 #length:I
4991 .end local v2 #test:Ljava/lang/String;
4992 :goto_1
4993 return v3
4994
4995 .line 2730
4996 .restart local v2 #test:Ljava/lang/String;
4997 :cond_1
4998 add-int/lit8 v0, v0, 0x1
4999
5000 goto :goto_0
5001
5002 .line 2740
5003 .end local v2 #test:Ljava/lang/String;
5004 :cond_2
5005 const/4 v3, 0x0
5006
5007 invoke-static {v3}, Landroid/mtp/MtpStorage;->getStorageId(I)I
5008
5009 move-result v3
5010
5011 goto :goto_1
5012.end method
5013
5014.method private getTableAndWhere(Landroid/net/Uri;ILjava/lang/String;Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;)V
5015 .locals 4
5016 .parameter
5017 .parameter
5018 .parameter
5019 .parameter
5020
5021 .prologue
5022 const/4 v3, 0x5
5023
5024 const/4 v2, 0x3
5025
5026 .line 3408
5027 const/4 v0, 0x0
5028
5029 .line 3409
5030 sparse-switch p2, :sswitch_data_0
5031
5032 .line 3523
5033 new-instance v0, Ljava/lang/UnsupportedOperationException;
5034
5035 new-instance v1, Ljava/lang/StringBuilder;
5036
5037 invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
5038
5039 const-string v2, "Unknown or unsupported URL: "
5040
5041 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5042
5043 move-result-object v1
5044
5045 invoke-virtual {p1}, Landroid/net/Uri;->toString()Ljava/lang/String;
5046
5047 move-result-object v2
5048
5049 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5050
5051 move-result-object v1
5052
5053 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5054
5055 move-result-object v1
5056
5057 invoke-direct {v0, v1}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
5058
5059 throw v0
5060
5061 .line 3411
5062 :sswitch_0
5063 const-string v0, "files"
5064
5065 iput-object v0, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5066
5067 .line 3412
5068 const-string v0, "media_type=1"
5069
5070 .line 3528
5071 :goto_0
5072 invoke-static {p3}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
5073
5074 move-result v1
5075
5076 if-nez v1, :cond_1
5077
5078 .line 3529
5079 invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
5080
5081 move-result v1
5082
5083 if-nez v1, :cond_0
5084
5085 .line 3530
5086 new-instance v1, Ljava/lang/StringBuilder;
5087
5088 invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
5089
5090 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5091
5092 move-result-object v0
5093
5094 const-string v1, " AND ("
5095
5096 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5097
5098 move-result-object v0
5099
5100 invoke-virtual {v0, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5101
5102 move-result-object v0
5103
5104 const-string v1, ")"
5105
5106 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5107
5108 move-result-object v0
5109
5110 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5111
5112 move-result-object v0
5113
5114 iput-object v0, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->where:Ljava/lang/String;
5115
5116 .line 3537
5117 :goto_1
5118 return-void
5119
5120 .line 3416
5121 :sswitch_1
5122 const-string v0, "files"
5123
5124 iput-object v0, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5125
5126 .line 3417
5127 new-instance v0, Ljava/lang/StringBuilder;
5128
5129 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5130
5131 const-string v1, "_id = "
5132
5133 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5134
5135 move-result-object v1
5136
5137 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
5138
5139 move-result-object v0
5140
5141 invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
5142
5143 move-result-object v0
5144
5145 check-cast v0, Ljava/lang/String;
5146
5147 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5148
5149 move-result-object v0
5150
5151 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5152
5153 move-result-object v0
5154
5155 goto :goto_0
5156
5157 .line 3421
5158 :sswitch_2
5159 new-instance v0, Ljava/lang/StringBuilder;
5160
5161 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5162
5163 const-string v1, "_id="
5164
5165 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5166
5167 move-result-object v1
5168
5169 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
5170
5171 move-result-object v0
5172
5173 invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
5174
5175 move-result-object v0
5176
5177 check-cast v0, Ljava/lang/String;
5178
5179 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5180
5181 move-result-object v0
5182
5183 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5184
5185 move-result-object v0
5186
5187 .line 3423
5188 :sswitch_3
5189 const-string v1, "thumbnails"
5190
5191 iput-object v1, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5192
5193 goto :goto_0
5194
5195 .line 3427
5196 :sswitch_4
5197 const-string v0, "files"
5198
5199 iput-object v0, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5200
5201 .line 3428
5202 const-string v0, "media_type=2"
5203
5204 goto :goto_0
5205
5206 .line 3432
5207 :sswitch_5
5208 const-string v0, "files"
5209
5210 iput-object v0, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5211
5212 .line 3433
5213 new-instance v0, Ljava/lang/StringBuilder;
5214
5215 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5216
5217 const-string v1, "_id="
5218
5219 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5220
5221 move-result-object v1
5222
5223 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
5224
5225 move-result-object v0
5226
5227 invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
5228
5229 move-result-object v0
5230
5231 check-cast v0, Ljava/lang/String;
5232
5233 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5234
5235 move-result-object v0
5236
5237 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5238
5239 move-result-object v0
5240
5241 goto/16 :goto_0
5242
5243 .line 3437
5244 :sswitch_6
5245 const-string v0, "audio_genres"
5246
5247 iput-object v0, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5248
5249 .line 3438
5250 new-instance v0, Ljava/lang/StringBuilder;
5251
5252 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5253
5254 const-string v1, "audio_id="
5255
5256 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5257
5258 move-result-object v1
5259
5260 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
5261
5262 move-result-object v0
5263
5264 invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
5265
5266 move-result-object v0
5267
5268 check-cast v0, Ljava/lang/String;
5269
5270 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5271
5272 move-result-object v0
5273
5274 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5275
5276 move-result-object v0
5277
5278 goto/16 :goto_0
5279
5280 .line 3442
5281 :sswitch_7
5282 const-string v0, "audio_genres"
5283
5284 iput-object v0, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5285
5286 .line 3443
5287 new-instance v0, Ljava/lang/StringBuilder;
5288
5289 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5290
5291 const-string v1, "audio_id="
5292
5293 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5294
5295 move-result-object v1
5296
5297 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
5298
5299 move-result-object v0
5300
5301 invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
5302
5303 move-result-object v0
5304
5305 check-cast v0, Ljava/lang/String;
5306
5307 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5308
5309 move-result-object v0
5310
5311 const-string v1, " AND genre_id="
5312
5313 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5314
5315 move-result-object v1
5316
5317 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
5318
5319 move-result-object v0
5320
5321 invoke-interface {v0, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
5322
5323 move-result-object v0
5324
5325 check-cast v0, Ljava/lang/String;
5326
5327 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5328
5329 move-result-object v0
5330
5331 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5332
5333 move-result-object v0
5334
5335 goto/16 :goto_0
5336
5337 .line 3448
5338 :sswitch_8
5339 const-string v0, "audio_playlists"
5340
5341 iput-object v0, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5342
5343 .line 3449
5344 new-instance v0, Ljava/lang/StringBuilder;
5345
5346 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5347
5348 const-string v1, "audio_id="
5349
5350 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5351
5352 move-result-object v1
5353
5354 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
5355
5356 move-result-object v0
5357
5358 invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
5359
5360 move-result-object v0
5361
5362 check-cast v0, Ljava/lang/String;
5363
5364 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5365
5366 move-result-object v0
5367
5368 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5369
5370 move-result-object v0
5371
5372 goto/16 :goto_0
5373
5374 .line 3453
5375 :sswitch_9
5376 const-string v0, "audio_playlists"
5377
5378 iput-object v0, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5379
5380 .line 3454
5381 new-instance v0, Ljava/lang/StringBuilder;
5382
5383 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5384
5385 const-string v1, "audio_id="
5386
5387 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5388
5389 move-result-object v1
5390
5391 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
5392
5393 move-result-object v0
5394
5395 invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
5396
5397 move-result-object v0
5398
5399 check-cast v0, Ljava/lang/String;
5400
5401 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5402
5403 move-result-object v0
5404
5405 const-string v1, " AND playlists_id="
5406
5407 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5408
5409 move-result-object v1
5410
5411 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
5412
5413 move-result-object v0
5414
5415 invoke-interface {v0, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
5416
5417 move-result-object v0
5418
5419 check-cast v0, Ljava/lang/String;
5420
5421 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5422
5423 move-result-object v0
5424
5425 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5426
5427 move-result-object v0
5428
5429 goto/16 :goto_0
5430
5431 .line 3459
5432 :sswitch_a
5433 const-string v1, "audio_genres"
5434
5435 iput-object v1, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5436
5437 goto/16 :goto_0
5438
5439 .line 3463
5440 :sswitch_b
5441 const-string v0, "audio_genres"
5442
5443 iput-object v0, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5444
5445 .line 3464
5446 new-instance v0, Ljava/lang/StringBuilder;
5447
5448 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5449
5450 const-string v1, "_id="
5451
5452 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5453
5454 move-result-object v1
5455
5456 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
5457
5458 move-result-object v0
5459
5460 invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
5461
5462 move-result-object v0
5463
5464 check-cast v0, Ljava/lang/String;
5465
5466 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5467
5468 move-result-object v0
5469
5470 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5471
5472 move-result-object v0
5473
5474 goto/16 :goto_0
5475
5476 .line 3468
5477 :sswitch_c
5478 const-string v0, "audio_genres"
5479
5480 iput-object v0, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5481
5482 .line 3469
5483 new-instance v0, Ljava/lang/StringBuilder;
5484
5485 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5486
5487 const-string v1, "genre_id="
5488
5489 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5490
5491 move-result-object v1
5492
5493 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
5494
5495 move-result-object v0
5496
5497 invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
5498
5499 move-result-object v0
5500
5501 check-cast v0, Ljava/lang/String;
5502
5503 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5504
5505 move-result-object v0
5506
5507 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5508
5509 move-result-object v0
5510
5511 goto/16 :goto_0
5512
5513 .line 3473
5514 :sswitch_d
5515 const-string v0, "files"
5516
5517 iput-object v0, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5518
5519 .line 3474
5520 const-string v0, "media_type=4"
5521
5522 goto/16 :goto_0
5523
5524 .line 3478
5525 :sswitch_e
5526 const-string v0, "files"
5527
5528 iput-object v0, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5529
5530 .line 3479
5531 new-instance v0, Ljava/lang/StringBuilder;
5532
5533 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5534
5535 const-string v1, "_id="
5536
5537 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5538
5539 move-result-object v1
5540
5541 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
5542
5543 move-result-object v0
5544
5545 invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
5546
5547 move-result-object v0
5548
5549 check-cast v0, Ljava/lang/String;
5550
5551 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5552
5553 move-result-object v0
5554
5555 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5556
5557 move-result-object v0
5558
5559 goto/16 :goto_0
5560
5561 .line 3483
5562 :sswitch_f
5563 const-string v0, "audio_playlists_map"
5564
5565 iput-object v0, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5566
5567 .line 3484
5568 new-instance v0, Ljava/lang/StringBuilder;
5569
5570 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5571
5572 const-string v1, "playlist_id="
5573
5574 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5575
5576 move-result-object v1
5577
5578 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
5579
5580 move-result-object v0
5581
5582 invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
5583
5584 move-result-object v0
5585
5586 check-cast v0, Ljava/lang/String;
5587
5588 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5589
5590 move-result-object v0
5591
5592 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5593
5594 move-result-object v0
5595
5596 goto/16 :goto_0
5597
5598 .line 3488
5599 :sswitch_10
5600 const-string v0, "audio_playlists_map"
5601
5602 iput-object v0, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5603
5604 .line 3489
5605 new-instance v0, Ljava/lang/StringBuilder;
5606
5607 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5608
5609 const-string v1, "playlist_id="
5610
5611 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5612
5613 move-result-object v1
5614
5615 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
5616
5617 move-result-object v0
5618
5619 invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
5620
5621 move-result-object v0
5622
5623 check-cast v0, Ljava/lang/String;
5624
5625 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5626
5627 move-result-object v0
5628
5629 const-string v1, " AND _id="
5630
5631 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5632
5633 move-result-object v1
5634
5635 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
5636
5637 move-result-object v0
5638
5639 invoke-interface {v0, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
5640
5641 move-result-object v0
5642
5643 check-cast v0, Ljava/lang/String;
5644
5645 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5646
5647 move-result-object v0
5648
5649 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5650
5651 move-result-object v0
5652
5653 goto/16 :goto_0
5654
5655 .line 3494
5656 :sswitch_11
5657 const-string v0, "album_art"
5658
5659 iput-object v0, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5660
5661 .line 3495
5662 new-instance v0, Ljava/lang/StringBuilder;
5663
5664 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5665
5666 const-string v1, "album_id="
5667
5668 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5669
5670 move-result-object v1
5671
5672 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
5673
5674 move-result-object v0
5675
5676 invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
5677
5678 move-result-object v0
5679
5680 check-cast v0, Ljava/lang/String;
5681
5682 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5683
5684 move-result-object v0
5685
5686 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5687
5688 move-result-object v0
5689
5690 goto/16 :goto_0
5691
5692 .line 3499
5693 :sswitch_12
5694 const-string v0, "files"
5695
5696 iput-object v0, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5697
5698 .line 3500
5699 const-string v0, "media_type=3"
5700
5701 goto/16 :goto_0
5702
5703 .line 3504
5704 :sswitch_13
5705 const-string v0, "files"
5706
5707 iput-object v0, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5708
5709 .line 3505
5710 new-instance v0, Ljava/lang/StringBuilder;
5711
5712 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5713
5714 const-string v1, "_id="
5715
5716 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5717
5718 move-result-object v1
5719
5720 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
5721
5722 move-result-object v0
5723
5724 invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
5725
5726 move-result-object v0
5727
5728 check-cast v0, Ljava/lang/String;
5729
5730 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5731
5732 move-result-object v0
5733
5734 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5735
5736 move-result-object v0
5737
5738 goto/16 :goto_0
5739
5740 .line 3509
5741 :sswitch_14
5742 new-instance v0, Ljava/lang/StringBuilder;
5743
5744 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5745
5746 const-string v1, "_id="
5747
5748 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5749
5750 move-result-object v1
5751
5752 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
5753
5754 move-result-object v0
5755
5756 invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
5757
5758 move-result-object v0
5759
5760 check-cast v0, Ljava/lang/String;
5761
5762 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5763
5764 move-result-object v0
5765
5766 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5767
5768 move-result-object v0
5769
5770 .line 3511
5771 :sswitch_15
5772 const-string v1, "videothumbnails"
5773
5774 iput-object v1, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5775
5776 goto/16 :goto_0
5777
5778 .line 3516
5779 :sswitch_16
5780 new-instance v0, Ljava/lang/StringBuilder;
5781
5782 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5783
5784 const-string v1, "_id="
5785
5786 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5787
5788 move-result-object v1
5789
5790 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
5791
5792 move-result-object v0
5793
5794 const/4 v2, 0x2
5795
5796 invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
5797
5798 move-result-object v0
5799
5800 check-cast v0, Ljava/lang/String;
5801
5802 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5803
5804 move-result-object v0
5805
5806 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5807
5808 move-result-object v0
5809
5810 .line 3519
5811 :sswitch_17
5812 const-string v1, "files"
5813
5814 iput-object v1, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
5815
5816 goto/16 :goto_0
5817
5818 .line 3532
5819 :cond_0
5820 iput-object p3, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->where:Ljava/lang/String;
5821
5822 goto/16 :goto_1
5823
5824 .line 3535
5825 :cond_1
5826 iput-object v0, p4, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->where:Ljava/lang/String;
5827
5828 goto/16 :goto_1
5829
5830 .line 3409
5831 nop
5832
5833 :sswitch_data_0
5834 .sparse-switch
5835 0x1 -> :sswitch_0
5836 0x2 -> :sswitch_1
5837 0x3 -> :sswitch_3
5838 0x4 -> :sswitch_2
5839 0x64 -> :sswitch_4
5840 0x65 -> :sswitch_5
5841 0x66 -> :sswitch_6
5842 0x67 -> :sswitch_7
5843 0x68 -> :sswitch_8
5844 0x69 -> :sswitch_9
5845 0x6a -> :sswitch_a
5846 0x6b -> :sswitch_b
5847 0x6c -> :sswitch_c
5848 0x6e -> :sswitch_d
5849 0x6f -> :sswitch_e
5850 0x70 -> :sswitch_f
5851 0x71 -> :sswitch_10
5852 0x78 -> :sswitch_11
5853 0xc8 -> :sswitch_12
5854 0xc9 -> :sswitch_13
5855 0xca -> :sswitch_15
5856 0xcb -> :sswitch_14
5857 0x2bc -> :sswitch_17
5858 0x2bd -> :sswitch_16
5859 0x2be -> :sswitch_17
5860 0x2bf -> :sswitch_16
5861 .end sparse-switch
5862.end method
5863
5864.method private getThumb(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;JLandroid/net/Uri;)Landroid/os/ParcelFileDescriptor;
5865 .locals 2
5866 .parameter "db"
5867 .parameter "path"
5868 .parameter "album_id"
5869 .parameter "albumart_uri"
5870
5871 .prologue
5872 .line 4184
5873 new-instance v0, Lcom/android/providers/media/MediaProvider$ThumbData;
5874
5875 const/4 v1, 0x0
5876
5877 invoke-direct {v0, p0, v1}, Lcom/android/providers/media/MediaProvider$ThumbData;-><init>(Lcom/android/providers/media/MediaProvider;Lcom/android/providers/media/MediaProvider$1;)V
5878
5879 .line 4185
5880 .local v0, d:Lcom/android/providers/media/MediaProvider$ThumbData;
5881 iput-object p1, v0, Lcom/android/providers/media/MediaProvider$ThumbData;->db:Landroid/database/sqlite/SQLiteDatabase;
5882
5883 .line 4186
5884 iput-object p2, v0, Lcom/android/providers/media/MediaProvider$ThumbData;->path:Ljava/lang/String;
5885
5886 .line 4187
5887 iput-wide p3, v0, Lcom/android/providers/media/MediaProvider$ThumbData;->album_id:J
5888
5889 .line 4188
5890 iput-object p5, v0, Lcom/android/providers/media/MediaProvider$ThumbData;->albumart_uri:Landroid/net/Uri;
5891
5892 .line 4189
5893 invoke-direct {p0, v0}, Lcom/android/providers/media/MediaProvider;->makeThumbInternal(Lcom/android/providers/media/MediaProvider$ThumbData;)Landroid/os/ParcelFileDescriptor;
5894
5895 move-result-object v1
5896
5897 return-object v1
5898.end method
5899
5900.method private insertDirectory(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)J
5901 .locals 9
5902 .parameter "db"
5903 .parameter "path"
5904
5905 .prologue
5906 .line 2558
5907 new-instance v3, Landroid/content/ContentValues;
5908
5909 invoke-direct {v3}, Landroid/content/ContentValues;-><init>()V
5910
5911 .line 2559
5912 .local v3, values:Landroid/content/ContentValues;
5913 const-string v4, "format"
5914
5915 const/16 v5, 0x3001
5916
5917 invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
5918
5919 move-result-object v5
5920
5921 invoke-virtual {v3, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V
5922
5923 .line 2560
5924 const-string v4, "_data"
5925
5926 invoke-virtual {v3, v4, p2}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
5927
5928 .line 2561
5929 const-string v4, "parent"
5930
5931 invoke-direct {p0, p1, p2}, Lcom/android/providers/media/MediaProvider;->getParent(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)J
5932
5933 move-result-wide v5
5934
5935 invoke-static {v5, v6}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
5936
5937 move-result-object v5
5938
5939 invoke-virtual {v3, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
5940
5941 .line 2562
5942 const-string v4, "storage_id"
5943
5944 invoke-direct {p0, p2}, Lcom/android/providers/media/MediaProvider;->getStorageId(Ljava/lang/String;)I
5945
5946 move-result v5
5947
5948 invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
5949
5950 move-result-object v5
5951
5952 invoke-virtual {v3, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V
5953
5954 .line 2563
5955 new-instance v0, Ljava/io/File;
5956
5957 invoke-direct {v0, p2}, Ljava/io/File;-><init>(Ljava/lang/String;)V
5958
5959 .line 2564
5960 .local v0, file:Ljava/io/File;
5961 invoke-virtual {v0}, Ljava/io/File;->exists()Z
5962
5963 move-result v4
5964
5965 if-eqz v4, :cond_0
5966
5967 .line 2565
5968 const-string v4, "date_modified"
5969
5970 invoke-virtual {v0}, Ljava/io/File;->lastModified()J
5971
5972 move-result-wide v5
5973
5974 const-wide/16 v7, 0x3e8
5975
5976 div-long/2addr v5, v7
5977
5978 invoke-static {v5, v6}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
5979
5980 move-result-object v5
5981
5982 invoke-virtual {v3, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
5983
5984 .line 2567
5985 :cond_0
5986 const-string v4, "files"
5987
5988 const-string v5, "date_modified"
5989
5990 invoke-virtual {p1, v4, v5, v3}, Landroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
5991
5992 move-result-wide v1
5993
5994 .line 2568
5995 .local v1, rowId:J
5996 invoke-direct {p0, v1, v2}, Lcom/android/providers/media/MediaProvider;->sendObjectAdded(J)V
5997
5998 .line 2569
5999 return-wide v1
6000.end method
6001
6002.method private static insertDirectory_for_upgrade(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)J
6003 .locals 9
6004 .parameter "db"
6005 .parameter "path"
6006
6007 .prologue
6008 .line 2610
6009 new-instance v3, Landroid/content/ContentValues;
6010
6011 invoke-direct {v3}, Landroid/content/ContentValues;-><init>()V
6012
6013 .line 2611
6014 .local v3, values:Landroid/content/ContentValues;
6015 const-string v4, "format"
6016
6017 const/16 v5, 0x3001
6018
6019 invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
6020
6021 move-result-object v5
6022
6023 invoke-virtual {v3, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V
6024
6025 .line 2612
6026 const-string v4, "_data"
6027
6028 invoke-virtual {v3, v4, p1}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
6029
6030 .line 2613
6031 const-string v4, "parent"
6032
6033 invoke-static {p0, p1}, Lcom/android/providers/media/MediaProvider;->getParent_for_upgrade(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)J
6034
6035 move-result-wide v5
6036
6037 invoke-static {v5, v6}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
6038
6039 move-result-object v5
6040
6041 invoke-virtual {v3, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
6042
6043 .line 2614
6044 const-string v4, "storage_id"
6045
6046 invoke-static {p1}, Lcom/android/providers/media/MediaProvider;->getStorageId_for_upgrade(Ljava/lang/String;)I
6047
6048 move-result v5
6049
6050 invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
6051
6052 move-result-object v5
6053
6054 invoke-virtual {v3, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V
6055
6056 .line 2615
6057 new-instance v0, Ljava/io/File;
6058
6059 invoke-direct {v0, p1}, Ljava/io/File;-><init>(Ljava/lang/String;)V
6060
6061 .line 2616
6062 .local v0, file:Ljava/io/File;
6063 invoke-virtual {v0}, Ljava/io/File;->exists()Z
6064
6065 move-result v4
6066
6067 if-eqz v4, :cond_0
6068
6069 .line 2617
6070 const-string v4, "date_modified"
6071
6072 invoke-virtual {v0}, Ljava/io/File;->lastModified()J
6073
6074 move-result-wide v5
6075
6076 const-wide/16 v7, 0x3e8
6077
6078 div-long/2addr v5, v7
6079
6080 invoke-static {v5, v6}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
6081
6082 move-result-object v5
6083
6084 invoke-virtual {v3, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
6085
6086 .line 2619
6087 :cond_0
6088 const-string v4, "files"
6089
6090 const-string v5, "date_modified"
6091
6092 invoke-virtual {p0, v4, v5, v3}, Landroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
6093
6094 move-result-wide v1
6095
6096 .line 2620
6097 .local v1, rowId:J
6098 return-wide v1
6099.end method
6100
6101.method private insertFile(Lcom/android/providers/media/MediaProvider$DatabaseHelper;Landroid/net/Uri;Landroid/content/ContentValues;IZ)J
6102 .locals 25
6103 .parameter
6104 .parameter
6105 .parameter
6106 .parameter
6107 .parameter
6108
6109 .prologue
6110 .line 2745
6111 invoke-virtual/range {p1 .. p1}, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->getWritableDatabase()Landroid/database/sqlite/SQLiteDatabase;
6112
6113 move-result-object v3
6114
6115 .line 2746
6116 const/4 v2, 0x0
6117
6118 .line 2748
6119 packed-switch p4, :pswitch_data_0
6120
6121 .line 2846
6122 :goto_0
6123 if-nez v2, :cond_0
6124
6125 .line 2847
6126 new-instance v2, Landroid/content/ContentValues;
6127
6128 move-object/from16 v0, p3
6129
6130 invoke-direct {v2, v0}, Landroid/content/ContentValues;-><init>(Landroid/content/ContentValues;)V
6131
6132 .line 2850
6133 :cond_0
6134 const-string v4, "_data"
6135
6136 invoke-virtual {v2, v4}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
6137
6138 move-result-object v8
6139
6140 .line 2851
6141 if-eqz v8, :cond_1
6142
6143 .line 2852
6144 invoke-static {v8, v2}, Lcom/android/providers/media/MediaProvider;->computeBucketValues(Ljava/lang/String;Landroid/content/ContentValues;)V
6145
6146 .line 2854
6147 :cond_1
6148 const-string v4, "date_added"
6149
6150 invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
6151
6152 move-result-wide v5
6153
6154 const-wide/16 v9, 0x3e8
6155
6156 div-long/2addr v5, v9
6157
6158 invoke-static {v5, v6}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
6159
6160 move-result-object v5
6161
6162 invoke-virtual {v2, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
6163
6164 .line 2856
6165 const-wide/16 v4, 0x0
6166
6167 .line 2857
6168 const-string v6, "media_scanner_new_object_id"
6169
6170 invoke-virtual {v2, v6}, Landroid/content/ContentValues;->getAsInteger(Ljava/lang/String;)Ljava/lang/Integer;
6171
6172 move-result-object v6
6173
6174 .line 2859
6175 if-eqz v6, :cond_2
6176
6177 .line 2860
6178 invoke-virtual {v6}, Ljava/lang/Integer;->intValue()I
6179
6180 move-result v4
6181
6182 int-to-long v4, v4
6183
6184 .line 2861
6185 new-instance v6, Landroid/content/ContentValues;
6186
6187 invoke-direct {v6, v2}, Landroid/content/ContentValues;-><init>(Landroid/content/ContentValues;)V
6188
6189 .line 2862
6190 const-string v2, "media_scanner_new_object_id"
6191
6192 invoke-virtual {v6, v2}, Landroid/content/ContentValues;->remove(Ljava/lang/String;)V
6193
6194 move-object v2, v6
6195
6196 .line 2865
6197 :cond_2
6198 const-string v6, "title"
6199
6200 invoke-virtual {v2, v6}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
6201
6202 move-result-object v6
6203
6204 .line 2866
6205 if-nez v6, :cond_3
6206
6207 if-eqz v8, :cond_3
6208
6209 .line 2867
6210 invoke-static {v8}, Landroid/media/MediaFile;->getFileTitle(Ljava/lang/String;)Ljava/lang/String;
6211
6212 move-result-object v6
6213
6214 .line 2869
6215 :cond_3
6216 const-string v7, "title"
6217
6218 invoke-virtual {v2, v7, v6}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
6219
6220 .line 2871
6221 const-string v6, "mime_type"
6222
6223 invoke-virtual {v2, v6}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
6224
6225 move-result-object v6
6226
6227 .line 2872
6228 const-string v7, "format"
6229
6230 invoke-virtual {v2, v7}, Landroid/content/ContentValues;->getAsInteger(Ljava/lang/String;)Ljava/lang/Integer;
6231
6232 move-result-object v7
6233
6234 .line 2873
6235 if-nez v7, :cond_12
6236
6237 const/4 v7, 0x0
6238
6239 .line 2874
6240 :goto_1
6241 if-nez v7, :cond_4
6242
6243 .line 2875
6244 invoke-static {v8}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
6245
6246 move-result v9
6247
6248 if-eqz v9, :cond_14
6249
6250 .line 2877
6251 const/4 v9, 0x4
6252
6253 move/from16 v0, p4
6254
6255 if-ne v0, v9, :cond_13
6256
6257 .line 2878
6258 const-string v8, "format"
6259
6260 const v9, 0xba05
6261
6262 invoke-static {v9}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
6263
6264 move-result-object v9
6265
6266 invoke-virtual {v2, v8, v9}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V
6267
6268 .line 2880
6269 new-instance v8, Ljava/lang/StringBuilder;
6270
6271 invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
6272
6273 sget-object v9, Lcom/android/providers/media/MediaProvider;->mExternalStoragePaths:[Ljava/lang/String;
6274
6275 const/4 v10, 0x0
6276
6277 aget-object v9, v9, v10
6278
6279 invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6280
6281 move-result-object v8
6282
6283 const-string v9, "/Playlists/"
6284
6285 invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6286
6287 move-result-object v8
6288
6289 const-string v9, "name"
6290
6291 invoke-virtual {v2, v9}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
6292
6293 move-result-object v9
6294
6295 invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6296
6297 move-result-object v8
6298
6299 invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
6300
6301 move-result-object v8
6302
6303 .line 2882
6304 const-string v9, "_data"
6305
6306 invoke-virtual {v2, v9, v8}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
6307
6308 .line 2883
6309 const-string v9, "parent"
6310
6311 move-object/from16 v0, p0
6312
6313 invoke-direct {v0, v3, v8}, Lcom/android/providers/media/MediaProvider;->getParent(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)J
6314
6315 move-result-wide v10
6316
6317 invoke-static {v10, v11}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
6318
6319 move-result-object v10
6320
6321 invoke-virtual {v2, v9, v10}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
6322
6323 .line 2891
6324 :cond_4
6325 :goto_2
6326 if-eqz v7, :cond_5
6327
6328 .line 2892
6329 const-string v9, "format"
6330
6331 invoke-static {v7}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
6332
6333 move-result-object v10
6334
6335 invoke-virtual {v2, v9, v10}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V
6336
6337 .line 2893
6338 if-nez v6, :cond_5
6339
6340 .line 2894
6341 invoke-static {v7}, Landroid/media/MediaFile;->getMimeTypeForFormatCode(I)Ljava/lang/String;
6342
6343 move-result-object v6
6344
6345 .line 2898
6346 :cond_5
6347 if-nez v6, :cond_6
6348
6349 if-eqz v8, :cond_6
6350
6351 .line 2899
6352 invoke-static {v8}, Landroid/media/MediaFile;->getMimeTypeForFile(Ljava/lang/String;)Ljava/lang/String;
6353
6354 move-result-object v6
6355
6356 .line 2901
6357 :cond_6
6358 if-eqz v6, :cond_7
6359
6360 .line 2902
6361 const-string v7, "mime_type"
6362
6363 invoke-virtual {v2, v7, v6}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
6364
6365 .line 2904
6366 if-nez p4, :cond_7
6367
6368 invoke-static {v8}, Landroid/media/MediaScanner;->isNoMediaPath(Ljava/lang/String;)Z
6369
6370 move-result v7
6371
6372 if-nez v7, :cond_7
6373
6374 .line 2905
6375 invoke-static {v6}, Landroid/media/MediaFile;->getFileTypeForMimeType(Ljava/lang/String;)I
6376
6377 move-result v6
6378
6379 .line 2906
6380 invoke-static {v6}, Landroid/media/MediaFile;->isAudioFileType(I)Z
6381
6382 move-result v7
6383
6384 if-eqz v7, :cond_15
6385
6386 .line 2907
6387 const/16 p4, 0x2
6388
6389 .line 2917
6390 :cond_7
6391 :goto_3
6392 const-string v6, "media_type"
6393
6394 invoke-static/range {p4 .. p4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
6395
6396 move-result-object v7
6397
6398 invoke-virtual {v2, v6, v7}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V
6399
6400 .line 2919
6401 const-wide/16 v6, 0x0
6402
6403 cmp-long v6, v4, v6
6404
6405 if-nez v6, :cond_1e
6406
6407 .line 2920
6408 const/4 v4, 0x4
6409
6410 move/from16 v0, p4
6411
6412 if-ne v0, v4, :cond_18
6413
6414 .line 2921
6415 const-string v4, "name"
6416
6417 invoke-virtual {v2, v4}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
6418
6419 move-result-object v4
6420
6421 .line 2922
6422 if-nez v4, :cond_19
6423
6424 if-nez v8, :cond_19
6425
6426 .line 2924
6427 new-instance v2, Ljava/lang/IllegalArgumentException;
6428
6429 const-string v3, "no name was provided when inserting abstract playlist"
6430
6431 invoke-direct {v2, v3}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
6432
6433 throw v2
6434
6435 .line 2750
6436 :pswitch_0
6437 move-object/from16 v0, p1
6438
6439 iget-boolean v2, v0, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->mInternal:Z
6440
6441 const-string v4, ".jpg"
6442
6443 const-string v5, "DCIM/Camera"
6444
6445 move-object/from16 v0, p0
6446
6447 move-object/from16 v1, p3
6448
6449 invoke-direct {v0, v2, v1, v4, v5}, Lcom/android/providers/media/MediaProvider;->ensureFile(ZLandroid/content/ContentValues;Ljava/lang/String;Ljava/lang/String;)Landroid/content/ContentValues;
6450
6451 move-result-object v2
6452
6453 .line 2752
6454 const-string v4, "date_added"
6455
6456 invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
6457
6458 move-result-wide v5
6459
6460 const-wide/16 v7, 0x3e8
6461
6462 div-long/2addr v5, v7
6463
6464 invoke-static {v5, v6}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
6465
6466 move-result-object v5
6467
6468 invoke-virtual {v2, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
6469
6470 .line 2753
6471 const-string v4, "_data"
6472
6473 invoke-virtual {v2, v4}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
6474
6475 move-result-object v4
6476
6477 .line 2754
6478 const-string v5, "_display_name"
6479
6480 invoke-virtual {v2, v5}, Landroid/content/ContentValues;->containsKey(Ljava/lang/String;)Z
6481
6482 move-result v5
6483
6484 if-nez v5, :cond_8
6485
6486 .line 2755
6487 invoke-static {v4, v2}, Lcom/android/providers/media/MediaProvider;->computeDisplayName(Ljava/lang/String;Landroid/content/ContentValues;)V
6488
6489 .line 2757
6490 :cond_8
6491 invoke-static {v2}, Lcom/android/providers/media/MediaProvider;->computeTakenTime(Landroid/content/ContentValues;)V
6492
6493 goto/16 :goto_0
6494
6495 .line 2767
6496 :pswitch_1
6497 new-instance v22, Landroid/content/ContentValues;
6498
6499 move-object/from16 v0, v22
6500
6501 move-object/from16 v1, p3
6502
6503 invoke-direct {v0, v1}, Landroid/content/ContentValues;-><init>(Landroid/content/ContentValues;)V
6504
6505 .line 2769
6506 const-string v2, "album_artist"
6507
6508 move-object/from16 v0, v22
6509
6510 invoke-virtual {v0, v2}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
6511
6512 move-result-object v14
6513
6514 .line 2770
6515 const-string v2, "compilation"
6516
6517 move-object/from16 v0, v22
6518
6519 invoke-virtual {v0, v2}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
6520
6521 move-result-object v16
6522
6523 .line 2771
6524 const-string v2, "compilation"
6525
6526 move-object/from16 v0, v22
6527
6528 invoke-virtual {v0, v2}, Landroid/content/ContentValues;->remove(Ljava/lang/String;)V
6529
6530 .line 2775
6531 const-string v2, "artist"
6532
6533 move-object/from16 v0, v22
6534
6535 invoke-virtual {v0, v2}, Landroid/content/ContentValues;->get(Ljava/lang/String;)Ljava/lang/Object;
6536
6537 move-result-object v2
6538
6539 .line 2776
6540 if-nez v2, :cond_b
6541
6542 const-string v7, ""
6543
6544 .line 2777
6545 :goto_4
6546 const-string v2, "artist"
6547
6548 move-object/from16 v0, v22
6549
6550 invoke-virtual {v0, v2}, Landroid/content/ContentValues;->remove(Ljava/lang/String;)V
6551
6552 .line 2779
6553 move-object/from16 v0, p1
6554
6555 iget-object v12, v0, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->mArtistCache:Ljava/util/HashMap;
6556
6557 .line 2780
6558 const-string v2, "_data"
6559
6560 move-object/from16 v0, v22
6561
6562 invoke-virtual {v0, v2}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
6563
6564 move-result-object v9
6565
6566 .line 2781
6567 monitor-enter v12
6568
6569 .line 2782
6570 :try_start_0
6571 invoke-virtual {v12, v7}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
6572
6573 move-result-object v2
6574
6575 check-cast v2, Ljava/lang/Long;
6576
6577 .line 2783
6578 if-nez v2, :cond_c
6579
6580 .line 2784
6581 const-string v4, "artists"
6582
6583 const-string v5, "artist_key"
6584
6585 const-string v6, "artist"
6586
6587 const/4 v10, 0x0
6588
6589 const/4 v11, 0x0
6590
6591 move-object/from16 v2, p0
6592
6593 move-object v8, v7
6594
6595 move-object/from16 v13, p2
6596
6597 invoke-direct/range {v2 .. v13}, Lcom/android/providers/media/MediaProvider;->getKeyIdForName(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/util/HashMap;Landroid/net/Uri;)J
6598
6599 move-result-wide v4
6600
6601 move-wide/from16 v23, v4
6602
6603 .line 2789
6604 :goto_5
6605 monitor-exit v12
6606 :try_end_0
6607 .catchall {:try_start_0 .. :try_end_0} :catchall_0
6608
6609 .line 2793
6610 const-string v2, "album"
6611
6612 move-object/from16 v0, v22
6613
6614 invoke-virtual {v0, v2}, Landroid/content/ContentValues;->get(Ljava/lang/String;)Ljava/lang/Object;
6615
6616 move-result-object v2
6617
6618 .line 2794
6619 if-nez v2, :cond_d
6620
6621 const-string v15, ""
6622
6623 .line 2795
6624 :goto_6
6625 const-string v2, "album"
6626
6627 move-object/from16 v0, v22
6628
6629 invoke-virtual {v0, v2}, Landroid/content/ContentValues;->remove(Ljava/lang/String;)V
6630
6631 .line 2797
6632 move-object/from16 v0, p1
6633
6634 iget-object v0, v0, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->mAlbumCache:Ljava/util/HashMap;
6635
6636 move-object/from16 v20, v0
6637
6638 .line 2798
6639 monitor-enter v20
6640
6641 .line 2799
6642 const/16 v18, 0x0
6643
6644 .line 2800
6645 if-eqz v14, :cond_e
6646
6647 .line 2801
6648 :try_start_1
6649 invoke-virtual {v14}, Ljava/lang/String;->hashCode()I
6650
6651 move-result v18
6652
6653 .line 2807
6654 :cond_9
6655 :goto_7
6656 new-instance v2, Ljava/lang/StringBuilder;
6657
6658 invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
6659
6660 invoke-virtual {v2, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6661
6662 move-result-object v2
6663
6664 move/from16 v0, v18
6665
6666 invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
6667
6668 move-result-object v2
6669
6670 invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
6671
6672 move-result-object v16
6673
6674 .line 2808
6675 move-object/from16 v0, v20
6676
6677 move-object/from16 v1, v16
6678
6679 invoke-virtual {v0, v1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
6680
6681 move-result-object v2
6682
6683 check-cast v2, Ljava/lang/Long;
6684
6685 .line 2809
6686 if-nez v2, :cond_10
6687
6688 .line 2810
6689 const-string v12, "albums"
6690
6691 const-string v13, "album_key"
6692
6693 const-string v14, "album"
6694
6695 move-object/from16 v10, p0
6696
6697 move-object v11, v3
6698
6699 move-object/from16 v17, v9
6700
6701 move-object/from16 v19, v7
6702
6703 move-object/from16 v21, p2
6704
6705 invoke-direct/range {v10 .. v21}, Lcom/android/providers/media/MediaProvider;->getKeyIdForName(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/util/HashMap;Landroid/net/Uri;)J
6706
6707 move-result-wide v4
6708
6709 .line 2815
6710 :goto_8
6711 monitor-exit v20
6712 :try_end_1
6713 .catchall {:try_start_1 .. :try_end_1} :catchall_1
6714
6715 .line 2816
6716 const/4 v2, 0x0
6717
6718 .line 2817
6719 const-string v6, "duration"
6720
6721 move-object/from16 v0, v22
6722
6723 invoke-virtual {v0, v6}, Landroid/content/ContentValues;->containsKey(Ljava/lang/String;)Z
6724
6725 move-result v6
6726
6727 if-eqz v6, :cond_a
6728
6729 .line 2818
6730 const-string v2, "duration"
6731
6732 move-object/from16 v0, v22
6733
6734 invoke-virtual {v0, v2}, Landroid/content/ContentValues;->getAsInteger(Ljava/lang/String;)Ljava/lang/Integer;
6735
6736 move-result-object v2
6737
6738 invoke-virtual {v2}, Ljava/lang/Integer;->intValue()I
6739
6740 move-result v2
6741
6742 .line 2822
6743 :cond_a
6744 sget-object v6, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
6745
6746 new-instance v7, Ljava/lang/StringBuilder;
6747
6748 invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
6749
6750 const-string v8, "[AUDIO_MEDIA]insertInternal(). duration: "
6751
6752 invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6753
6754 move-result-object v7
6755
6756 invoke-virtual {v7, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
6757
6758 move-result-object v2
6759
6760 const-string v7, ", path: "
6761
6762 invoke-virtual {v2, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6763
6764 move-result-object v2
6765
6766 invoke-virtual {v2, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6767
6768 move-result-object v2
6769
6770 invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
6771
6772 move-result-object v2
6773
6774 invoke-static {v6, v2}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
6775
6776 .line 2823
6777 const-string v2, "artist_id"
6778
6779 move-wide/from16 v0, v23
6780
6781 long-to-int v6, v0
6782
6783 invoke-static {v6}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
6784
6785 move-result-object v6
6786
6787 move-object/from16 v0, v22
6788
6789 invoke-virtual {v0, v2, v6}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
6790
6791 .line 2824
6792 const-string v2, "album_id"
6793
6794 long-to-int v4, v4
6795
6796 invoke-static {v4}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
6797
6798 move-result-object v4
6799
6800 move-object/from16 v0, v22
6801
6802 invoke-virtual {v0, v2, v4}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
6803
6804 .line 2825
6805 const-string v2, "title"
6806
6807 move-object/from16 v0, v22
6808
6809 invoke-virtual {v0, v2}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
6810
6811 move-result-object v2
6812
6813 .line 2826
6814 if-nez v2, :cond_11
6815
6816 const-string v2, ""
6817
6818 .line 2827
6819 :goto_9
6820 const-string v4, "title_key"
6821
6822 invoke-static {v2}, Landroid/provider/MediaStore$Audio;->keyFor(Ljava/lang/String;)Ljava/lang/String;
6823
6824 move-result-object v5
6825
6826 move-object/from16 v0, v22
6827
6828 invoke-virtual {v0, v4, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
6829
6830 .line 2830
6831 const-string v4, "title"
6832
6833 move-object/from16 v0, v22
6834
6835 invoke-virtual {v0, v4}, Landroid/content/ContentValues;->remove(Ljava/lang/String;)V
6836
6837 .line 2831
6838 const-string v4, "title"
6839
6840 invoke-virtual {v2}, Ljava/lang/String;->trim()Ljava/lang/String;
6841
6842 move-result-object v2
6843
6844 move-object/from16 v0, v22
6845
6846 invoke-virtual {v0, v4, v2}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
6847
6848 .line 2833
6849 const-string v2, "_data"
6850
6851 move-object/from16 v0, v22
6852
6853 invoke-virtual {v0, v2}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
6854
6855 move-result-object v2
6856
6857 move-object/from16 v0, v22
6858
6859 invoke-static {v2, v0}, Lcom/android/providers/media/MediaProvider;->computeDisplayName(Ljava/lang/String;Landroid/content/ContentValues;)V
6860
6861 move-object/from16 v2, v22
6862
6863 .line 2834
6864 goto/16 :goto_0
6865
6866 .line 2776
6867 :cond_b
6868 invoke-virtual {v2}, Ljava/lang/Object;->toString()Ljava/lang/String;
6869
6870 move-result-object v7
6871
6872 goto/16 :goto_4
6873
6874 .line 2787
6875 :cond_c
6876 :try_start_2
6877 invoke-virtual {v2}, Ljava/lang/Long;->longValue()J
6878
6879 move-result-wide v4
6880
6881 move-wide/from16 v23, v4
6882
6883 goto/16 :goto_5
6884
6885 .line 2789
6886 :catchall_0
6887 move-exception v2
6888
6889 monitor-exit v12
6890 :try_end_2
6891 .catchall {:try_start_2 .. :try_end_2} :catchall_0
6892
6893 throw v2
6894
6895 .line 2794
6896 :cond_d
6897 invoke-virtual {v2}, Ljava/lang/Object;->toString()Ljava/lang/String;
6898
6899 move-result-object v15
6900
6901 goto/16 :goto_6
6902
6903 .line 2802
6904 :cond_e
6905 if-eqz v16, :cond_f
6906
6907 :try_start_3
6908 const-string v2, "1"
6909
6910 move-object/from16 v0, v16
6911
6912 invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
6913
6914 move-result v2
6915
6916 if-nez v2, :cond_9
6917
6918 .line 2805
6919 :cond_f
6920 const/4 v2, 0x0
6921
6922 const/16 v4, 0x2f
6923
6924 invoke-virtual {v9, v4}, Ljava/lang/String;->lastIndexOf(I)I
6925
6926 move-result v4
6927
6928 invoke-virtual {v9, v2, v4}, Ljava/lang/String;->substring(II)Ljava/lang/String;
6929
6930 move-result-object v2
6931
6932 invoke-virtual {v2}, Ljava/lang/String;->hashCode()I
6933
6934 move-result v18
6935
6936 goto/16 :goto_7
6937
6938 .line 2813
6939 :cond_10
6940 invoke-virtual {v2}, Ljava/lang/Long;->longValue()J
6941
6942 move-result-wide v4
6943
6944 goto/16 :goto_8
6945
6946 .line 2815
6947 :catchall_1
6948 move-exception v2
6949
6950 monitor-exit v20
6951 :try_end_3
6952 .catchall {:try_start_3 .. :try_end_3} :catchall_1
6953
6954 throw v2
6955
6956 .line 2826
6957 :cond_11
6958 invoke-virtual {v2}, Ljava/lang/String;->toString()Ljava/lang/String;
6959
6960 move-result-object v2
6961
6962 goto :goto_9
6963
6964 .line 2838
6965 :pswitch_2
6966 move-object/from16 v0, p1
6967
6968 iget-boolean v2, v0, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->mInternal:Z
6969
6970 const-string v4, ".3gp"
6971
6972 const-string v5, "video"
6973
6974 move-object/from16 v0, p0
6975
6976 move-object/from16 v1, p3
6977
6978 invoke-direct {v0, v2, v1, v4, v5}, Lcom/android/providers/media/MediaProvider;->ensureFile(ZLandroid/content/ContentValues;Ljava/lang/String;Ljava/lang/String;)Landroid/content/ContentValues;
6979
6980 move-result-object v2
6981
6982 .line 2839
6983 const-string v4, "_data"
6984
6985 invoke-virtual {v2, v4}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
6986
6987 move-result-object v4
6988
6989 .line 2840
6990 invoke-static {v4, v2}, Lcom/android/providers/media/MediaProvider;->computeDisplayName(Ljava/lang/String;Landroid/content/ContentValues;)V
6991
6992 .line 2841
6993 invoke-static {v2}, Lcom/android/providers/media/MediaProvider;->computeTakenTime(Landroid/content/ContentValues;)V
6994
6995 goto/16 :goto_0
6996
6997 .line 2873
6998 :cond_12
6999 invoke-virtual {v7}, Ljava/lang/Integer;->intValue()I
7000
7001 move-result v7
7002
7003 goto/16 :goto_1
7004
7005 .line 2885
7006 :cond_13
7007 sget-object v9, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
7008
7009 const-string v10, "path is empty in insertFile()"
7010
7011 invoke-static {v9, v10}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
7012
7013 goto/16 :goto_2
7014
7015 .line 2888
7016 :cond_14
7017 invoke-static {v8, v6}, Landroid/media/MediaFile;->getFormatCode(Ljava/lang/String;Ljava/lang/String;)I
7018
7019 move-result v7
7020
7021 goto/16 :goto_2
7022
7023 .line 2908
7024 :cond_15
7025 invoke-static {v6}, Landroid/media/MediaFile;->isVideoFileType(I)Z
7026
7027 move-result v7
7028
7029 if-eqz v7, :cond_16
7030
7031 .line 2909
7032 const/16 p4, 0x3
7033
7034 goto/16 :goto_3
7035
7036 .line 2910
7037 :cond_16
7038 invoke-static {v6}, Landroid/media/MediaFile;->isImageFileType(I)Z
7039
7040 move-result v7
7041
7042 if-eqz v7, :cond_17
7043
7044 .line 2911
7045 const/16 p4, 0x1
7046
7047 goto/16 :goto_3
7048
7049 .line 2912
7050 :cond_17
7051 invoke-static {v6}, Landroid/media/MediaFile;->isPlayListFileType(I)Z
7052
7053 move-result v6
7054
7055 if-eqz v6, :cond_7
7056
7057 .line 2913
7058 const/16 p4, 0x4
7059
7060 goto/16 :goto_3
7061
7062 .line 2928
7063 :cond_18
7064 if-nez v8, :cond_19
7065
7066 .line 2931
7067 new-instance v2, Ljava/lang/IllegalArgumentException;
7068
7069 const-string v3, "no path was provided when inserting new file"
7070
7071 invoke-direct {v2, v3}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
7072
7073 throw v2
7074
7075 .line 2937
7076 :cond_19
7077 if-eqz v8, :cond_1a
7078
7079 .line 2938
7080 new-instance v4, Ljava/io/File;
7081
7082 invoke-direct {v4, v8}, Ljava/io/File;-><init>(Ljava/lang/String;)V
7083
7084 .line 2939
7085 invoke-virtual {v4}, Ljava/io/File;->exists()Z
7086
7087 move-result v5
7088
7089 if-eqz v5, :cond_1a
7090
7091 .line 2940
7092 const-string v5, "date_modified"
7093
7094 invoke-virtual {v4}, Ljava/io/File;->lastModified()J
7095
7096 move-result-wide v6
7097
7098 const-wide/16 v9, 0x3e8
7099
7100 div-long/2addr v6, v9
7101
7102 invoke-static {v6, v7}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
7103
7104 move-result-object v6
7105
7106 invoke-virtual {v2, v5, v6}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
7107
7108 .line 2941
7109 const-string v5, "_size"
7110
7111 invoke-virtual {v4}, Ljava/io/File;->length()J
7112
7113 move-result-wide v6
7114
7115 invoke-static {v6, v7}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
7116
7117 move-result-object v4
7118
7119 invoke-virtual {v2, v5, v4}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
7120
7121 .line 2945
7122 :cond_1a
7123 const-string v4, "parent"
7124
7125 invoke-virtual {v2, v4}, Landroid/content/ContentValues;->getAsLong(Ljava/lang/String;)Ljava/lang/Long;
7126
7127 move-result-object v4
7128
7129 .line 2946
7130 if-nez v4, :cond_1b
7131
7132 .line 2947
7133 if-eqz v8, :cond_1b
7134
7135 .line 2948
7136 move-object/from16 v0, p0
7137
7138 invoke-direct {v0, v3, v8}, Lcom/android/providers/media/MediaProvider;->getParent(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)J
7139
7140 move-result-wide v4
7141
7142 .line 2949
7143 const-string v6, "parent"
7144
7145 invoke-static {v4, v5}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
7146
7147 move-result-object v4
7148
7149 invoke-virtual {v2, v6, v4}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
7150
7151 .line 2952
7152 :cond_1b
7153 const-string v4, "storage_id"
7154
7155 invoke-virtual {v2, v4}, Landroid/content/ContentValues;->getAsInteger(Ljava/lang/String;)Ljava/lang/Integer;
7156
7157 move-result-object v4
7158
7159 .line 2953
7160 if-nez v4, :cond_1c
7161
7162 .line 2954
7163 move-object/from16 v0, p0
7164
7165 invoke-direct {v0, v8}, Lcom/android/providers/media/MediaProvider;->getStorageId(Ljava/lang/String;)I
7166
7167 move-result v4
7168
7169 .line 2955
7170 const-string v5, "storage_id"
7171
7172 invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
7173
7174 move-result-object v4
7175
7176 invoke-virtual {v2, v5, v4}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V
7177
7178 .line 2958
7179 :cond_1c
7180 const-string v4, "files"
7181
7182 const-string v5, "date_modified"
7183
7184 invoke-virtual {v3, v4, v5, v2}, Landroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
7185
7186 move-result-wide v4
7187
7188 .line 2961
7189 const-wide/16 v2, 0x0
7190
7191 cmp-long v2, v4, v2
7192
7193 if-eqz v2, :cond_1d
7194
7195 if-eqz p5, :cond_1d
7196
7197 .line 2962
7198 move-object/from16 v0, p0
7199
7200 invoke-direct {v0, v4, v5}, Lcom/android/providers/media/MediaProvider;->sendObjectAdded(J)V
7201
7202 .line 2969
7203 :cond_1d
7204 :goto_a
7205 return-wide v4
7206
7207 .line 2965
7208 :cond_1e
7209 const-string v6, "files"
7210
7211 const-string v7, "_id=?"
7212
7213 const/4 v8, 0x1
7214
7215 new-array v8, v8, [Ljava/lang/String;
7216
7217 const/4 v9, 0x0
7218
7219 invoke-static {v4, v5}, Ljava/lang/Long;->toString(J)Ljava/lang/String;
7220
7221 move-result-object v10
7222
7223 aput-object v10, v8, v9
7224
7225 invoke-virtual {v3, v6, v2, v7, v8}, Landroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
7226
7227 goto :goto_a
7228
7229 .line 2748
7230 :pswitch_data_0
7231 .packed-switch 0x1
7232 :pswitch_0
7233 :pswitch_1
7234 :pswitch_2
7235 .end packed-switch
7236.end method
7237
7238.method private insertInternal(Landroid/net/Uri;ILandroid/content/ContentValues;)Landroid/net/Uri;
7239 .locals 10
7240 .parameter
7241 .parameter
7242 .parameter
7243
7244 .prologue
7245 .line 3114
7246 const/16 v0, 0x1f4
7247
7248 if-ne p2, v0, :cond_1
7249
7250 .line 3115
7251 const-string v0, "volume"
7252
7253 invoke-virtual {p3, v0}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
7254
7255 move-result-object v0
7256
7257 iput-object v0, p0, Lcom/android/providers/media/MediaProvider;->mMediaScannerVolume:Ljava/lang/String;
7258
7259 .line 3116
7260 invoke-static {}, Landroid/provider/MediaStore;->getMediaScannerUri()Landroid/net/Uri;
7261
7262 move-result-object v0
7263
7264 .line 3305
7265 :cond_0
7266 :goto_0
7267 return-object v0
7268
7269 .line 3119
7270 :cond_1
7271 const/4 v0, 0x0
7272
7273 .line 3120
7274 if-eqz p3, :cond_8
7275
7276 .line 3121
7277 const-string v0, "genre"
7278
7279 invoke-virtual {p3, v0}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
7280
7281 move-result-object v0
7282
7283 .line 3122
7284 const-string v1, "genre"
7285
7286 invoke-virtual {p3, v1}, Landroid/content/ContentValues;->remove(Ljava/lang/String;)V
7287
7288 move-object v6, v0
7289
7290 .line 3125
7291 :goto_1
7292 const/4 v7, 0x0
7293
7294 .line 3126
7295 invoke-direct {p0, p1}, Lcom/android/providers/media/MediaProvider;->getDatabaseForUri(Landroid/net/Uri;)Lcom/android/providers/media/MediaProvider$DatabaseHelper;
7296
7297 move-result-object v1
7298
7299 .line 3127
7300 if-nez v1, :cond_2
7301
7302 const/16 v0, 0x12c
7303
7304 if-eq p2, v0, :cond_2
7305
7306 const/16 v0, 0x2c1
7307
7308 if-eq p2, v0, :cond_2
7309
7310 .line 3128
7311 new-instance v0, Ljava/lang/UnsupportedOperationException;
7312
7313 new-instance v1, Ljava/lang/StringBuilder;
7314
7315 invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
7316
7317 const-string v2, "Unknown URI: "
7318
7319 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
7320
7321 move-result-object v1
7322
7323 invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
7324
7325 move-result-object v1
7326
7327 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
7328
7329 move-result-object v1
7330
7331 invoke-direct {v0, v1}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
7332
7333 throw v0
7334
7335 .line 3131
7336 :cond_2
7337 const/16 v0, 0x12c
7338
7339 if-eq p2, v0, :cond_3
7340
7341 const/16 v0, 0x2c1
7342
7343 if-ne p2, v0, :cond_4
7344
7345 :cond_3
7346 const/4 v0, 0x0
7347
7348 move-object v2, v0
7349
7350 .line 3134
7351 :goto_2
7352 sparse-switch p2, :sswitch_data_0
7353
7354 .line 3302
7355 new-instance v0, Ljava/lang/UnsupportedOperationException;
7356
7357 new-instance v1, Ljava/lang/StringBuilder;
7358
7359 invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
7360
7361 const-string v2, "Invalid URI "
7362
7363 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
7364
7365 move-result-object v1
7366
7367 invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
7368
7369 move-result-object v1
7370
7371 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
7372
7373 move-result-object v1
7374
7375 invoke-direct {v0, v1}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
7376
7377 throw v0
7378
7379 .line 3131
7380 :cond_4
7381 invoke-virtual {v1}, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->getWritableDatabase()Landroid/database/sqlite/SQLiteDatabase;
7382
7383 move-result-object v0
7384
7385 move-object v2, v0
7386
7387 goto :goto_2
7388
7389 .line 3136
7390 :sswitch_0
7391 const/4 v4, 0x1
7392
7393 const/4 v5, 0x1
7394
7395 move-object v0, p0
7396
7397 move-object v2, p1
7398
7399 move-object v3, p3
7400
7401 invoke-direct/range {v0 .. v5}, Lcom/android/providers/media/MediaProvider;->insertFile(Lcom/android/providers/media/MediaProvider$DatabaseHelper;Landroid/net/Uri;Landroid/content/ContentValues;IZ)J
7402
7403 move-result-wide v1
7404
7405 .line 3137
7406 const-wide/16 v3, 0x0
7407
7408 cmp-long v0, v1, v3
7409
7410 if-lez v0, :cond_7
7411
7412 .line 3138
7413 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
7414
7415 move-result-object v0
7416
7417 const/4 v3, 0x0
7418
7419 invoke-interface {v0, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
7420
7421 move-result-object v0
7422
7423 check-cast v0, Ljava/lang/String;
7424
7425 invoke-static {v0}, Landroid/provider/MediaStore$Images$Media;->getContentUri(Ljava/lang/String;)Landroid/net/Uri;
7426
7427 move-result-object v0
7428
7429 invoke-static {v0, v1, v2}, Landroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;
7430
7431 move-result-object v0
7432
7433 goto/16 :goto_0
7434
7435 .line 3146
7436 :sswitch_1
7437 iget-boolean v0, v1, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->mInternal:Z
7438
7439 const-string v1, ".jpg"
7440
7441 const-string v3, "DCIM/.thumbnails"
7442
7443 invoke-direct {p0, v0, p3, v1, v3}, Lcom/android/providers/media/MediaProvider;->ensureFile(ZLandroid/content/ContentValues;Ljava/lang/String;Ljava/lang/String;)Landroid/content/ContentValues;
7444
7445 move-result-object v0
7446
7447 .line 3148
7448 const-string v1, "thumbnails"
7449
7450 const-string v3, "name"
7451
7452 invoke-virtual {v2, v1, v3, v0}, Landroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
7453
7454 move-result-wide v1
7455
7456 .line 3149
7457 const-wide/16 v3, 0x0
7458
7459 cmp-long v0, v1, v3
7460
7461 if-lez v0, :cond_7
7462
7463 .line 3150
7464 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
7465
7466 move-result-object v0
7467
7468 const/4 v3, 0x0
7469
7470 invoke-interface {v0, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
7471
7472 move-result-object v0
7473
7474 check-cast v0, Ljava/lang/String;
7475
7476 invoke-static {v0}, Landroid/provider/MediaStore$Images$Thumbnails;->getContentUri(Ljava/lang/String;)Landroid/net/Uri;
7477
7478 move-result-object v0
7479
7480 invoke-static {v0, v1, v2}, Landroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;
7481
7482 move-result-object v0
7483
7484 goto/16 :goto_0
7485
7486 .line 3158
7487 :sswitch_2
7488 iget-boolean v0, v1, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->mInternal:Z
7489
7490 const-string v1, ".jpg"
7491
7492 const-string v3, "DCIM/.thumbnails"
7493
7494 invoke-direct {p0, v0, p3, v1, v3}, Lcom/android/providers/media/MediaProvider;->ensureFile(ZLandroid/content/ContentValues;Ljava/lang/String;Ljava/lang/String;)Landroid/content/ContentValues;
7495
7496 move-result-object v0
7497
7498 .line 3160
7499 const-string v1, "videothumbnails"
7500
7501 const-string v3, "name"
7502
7503 invoke-virtual {v2, v1, v3, v0}, Landroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
7504
7505 move-result-wide v1
7506
7507 .line 3161
7508 const-wide/16 v3, 0x0
7509
7510 cmp-long v0, v1, v3
7511
7512 if-lez v0, :cond_7
7513
7514 .line 3162
7515 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
7516
7517 move-result-object v0
7518
7519 const/4 v3, 0x0
7520
7521 invoke-interface {v0, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
7522
7523 move-result-object v0
7524
7525 check-cast v0, Ljava/lang/String;
7526
7527 invoke-static {v0}, Landroid/provider/MediaStore$Video$Thumbnails;->getContentUri(Ljava/lang/String;)Landroid/net/Uri;
7528
7529 move-result-object v0
7530
7531 invoke-static {v0, v1, v2}, Landroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;
7532
7533 move-result-object v0
7534
7535 goto/16 :goto_0
7536
7537 .line 3169
7538 :sswitch_3
7539 const/4 v4, 0x2
7540
7541 const/4 v5, 0x1
7542
7543 move-object v0, p0
7544
7545 move-object v2, p1
7546
7547 move-object v3, p3
7548
7549 invoke-direct/range {v0 .. v5}, Lcom/android/providers/media/MediaProvider;->insertFile(Lcom/android/providers/media/MediaProvider$DatabaseHelper;Landroid/net/Uri;Landroid/content/ContentValues;IZ)J
7550
7551 move-result-wide v1
7552
7553 .line 3170
7554 const-wide/16 v3, 0x0
7555
7556 cmp-long v0, v1, v3
7557
7558 if-lez v0, :cond_7
7559
7560 .line 3171
7561 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
7562
7563 move-result-object v0
7564
7565 const/4 v3, 0x0
7566
7567 invoke-interface {v0, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
7568
7569 move-result-object v0
7570
7571 check-cast v0, Ljava/lang/String;
7572
7573 invoke-static {v0}, Landroid/provider/MediaStore$Audio$Media;->getContentUri(Ljava/lang/String;)Landroid/net/Uri;
7574
7575 move-result-object v0
7576
7577 invoke-static {v0, v1, v2}, Landroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;
7578
7579 move-result-object v0
7580
7581 .line 3172
7582 if-eqz v6, :cond_0
7583
7584 .line 3173
7585 invoke-direct {p0, v1, v2, v6}, Lcom/android/providers/media/MediaProvider;->updateGenre(JLjava/lang/String;)V
7586
7587 goto/16 :goto_0
7588
7589 .line 3180
7590 :sswitch_4
7591 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
7592
7593 move-result-object v0
7594
7595 const/4 v1, 0x2
7596
7597 invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
7598
7599 move-result-object v0
7600
7601 check-cast v0, Ljava/lang/String;
7602
7603 invoke-static {v0}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
7604
7605 move-result-wide v0
7606
7607 invoke-static {v0, v1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
7608
7609 move-result-object v0
7610
7611 .line 3181
7612 new-instance v1, Landroid/content/ContentValues;
7613
7614 invoke-direct {v1, p3}, Landroid/content/ContentValues;-><init>(Landroid/content/ContentValues;)V
7615
7616 .line 3182
7617 const-string v3, "audio_id"
7618
7619 invoke-virtual {v1, v3, v0}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
7620
7621 .line 3183
7622 const-string v0, "audio_genres_map"
7623
7624 const-string v3, "genre_id"
7625
7626 invoke-virtual {v2, v0, v3, v1}, Landroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
7627
7628 move-result-wide v0
7629
7630 .line 3184
7631 const-wide/16 v2, 0x0
7632
7633 cmp-long v2, v0, v2
7634
7635 if-lez v2, :cond_7
7636
7637 .line 3185
7638 invoke-static {p1, v0, v1}, Landroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;
7639
7640 move-result-object v0
7641
7642 goto/16 :goto_0
7643
7644 .line 3191
7645 :sswitch_5
7646 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
7647
7648 move-result-object v0
7649
7650 const/4 v1, 0x2
7651
7652 invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
7653
7654 move-result-object v0
7655
7656 check-cast v0, Ljava/lang/String;
7657
7658 invoke-static {v0}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
7659
7660 move-result-wide v0
7661
7662 invoke-static {v0, v1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
7663
7664 move-result-object v0
7665
7666 .line 3192
7667 new-instance v1, Landroid/content/ContentValues;
7668
7669 invoke-direct {v1, p3}, Landroid/content/ContentValues;-><init>(Landroid/content/ContentValues;)V
7670
7671 .line 3193
7672 const-string v3, "audio_id"
7673
7674 invoke-virtual {v1, v3, v0}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
7675
7676 .line 3194
7677 const-string v0, "audio_playlists_map"
7678
7679 const-string v3, "playlist_id"
7680
7681 invoke-virtual {v2, v0, v3, v1}, Landroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
7682
7683 move-result-wide v0
7684
7685 .line 3196
7686 const-wide/16 v2, 0x0
7687
7688 cmp-long v2, v0, v2
7689
7690 if-lez v2, :cond_7
7691
7692 .line 3197
7693 invoke-static {p1, v0, v1}, Landroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;
7694
7695 move-result-object v0
7696
7697 goto/16 :goto_0
7698
7699 .line 3203
7700 :sswitch_6
7701 const-string v0, "audio_genres"
7702
7703 const-string v1, "audio_id"
7704
7705 invoke-virtual {v2, v0, v1, p3}, Landroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
7706
7707 move-result-wide v1
7708
7709 .line 3204
7710 const-wide/16 v3, 0x0
7711
7712 cmp-long v0, v1, v3
7713
7714 if-lez v0, :cond_7
7715
7716 .line 3205
7717 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
7718
7719 move-result-object v0
7720
7721 const/4 v3, 0x0
7722
7723 invoke-interface {v0, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
7724
7725 move-result-object v0
7726
7727 check-cast v0, Ljava/lang/String;
7728
7729 invoke-static {v0}, Landroid/provider/MediaStore$Audio$Genres;->getContentUri(Ljava/lang/String;)Landroid/net/Uri;
7730
7731 move-result-object v0
7732
7733 invoke-static {v0, v1, v2}, Landroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;
7734
7735 move-result-object v0
7736
7737 goto/16 :goto_0
7738
7739 .line 3211
7740 :sswitch_7
7741 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
7742
7743 move-result-object v0
7744
7745 const/4 v1, 0x3
7746
7747 invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
7748
7749 move-result-object v0
7750
7751 check-cast v0, Ljava/lang/String;
7752
7753 invoke-static {v0}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
7754
7755 move-result-wide v0
7756
7757 invoke-static {v0, v1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
7758
7759 move-result-object v0
7760
7761 .line 3212
7762 new-instance v1, Landroid/content/ContentValues;
7763
7764 invoke-direct {v1, p3}, Landroid/content/ContentValues;-><init>(Landroid/content/ContentValues;)V
7765
7766 .line 3213
7767 const-string v3, "genre_id"
7768
7769 invoke-virtual {v1, v3, v0}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
7770
7771 .line 3214
7772 const-string v0, "audio_genres_map"
7773
7774 const-string v3, "genre_id"
7775
7776 invoke-virtual {v2, v0, v3, v1}, Landroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
7777
7778 move-result-wide v0
7779
7780 .line 3215
7781 const-wide/16 v2, 0x0
7782
7783 cmp-long v2, v0, v2
7784
7785 if-lez v2, :cond_7
7786
7787 .line 3216
7788 invoke-static {p1, v0, v1}, Landroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;
7789
7790 move-result-object v0
7791
7792 goto/16 :goto_0
7793
7794 .line 3222
7795 :sswitch_8
7796 new-instance v3, Landroid/content/ContentValues;
7797
7798 invoke-direct {v3, p3}, Landroid/content/ContentValues;-><init>(Landroid/content/ContentValues;)V
7799
7800 .line 3223
7801 const-string v0, "date_added"
7802
7803 invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
7804
7805 move-result-wide v4
7806
7807 const-wide/16 v8, 0x3e8
7808
7809 div-long/2addr v4, v8
7810
7811 invoke-static {v4, v5}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
7812
7813 move-result-object v2
7814
7815 invoke-virtual {v3, v0, v2}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
7816
7817 .line 3224
7818 const/4 v4, 0x4
7819
7820 const/4 v5, 0x1
7821
7822 move-object v0, p0
7823
7824 move-object v2, p1
7825
7826 invoke-direct/range {v0 .. v5}, Lcom/android/providers/media/MediaProvider;->insertFile(Lcom/android/providers/media/MediaProvider$DatabaseHelper;Landroid/net/Uri;Landroid/content/ContentValues;IZ)J
7827
7828 move-result-wide v1
7829
7830 .line 3225
7831 const-wide/16 v3, 0x0
7832
7833 cmp-long v0, v1, v3
7834
7835 if-lez v0, :cond_7
7836
7837 .line 3226
7838 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
7839
7840 move-result-object v0
7841
7842 const/4 v3, 0x0
7843
7844 invoke-interface {v0, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
7845
7846 move-result-object v0
7847
7848 check-cast v0, Ljava/lang/String;
7849
7850 invoke-static {v0}, Landroid/provider/MediaStore$Audio$Playlists;->getContentUri(Ljava/lang/String;)Landroid/net/Uri;
7851
7852 move-result-object v0
7853
7854 invoke-static {v0, v1, v2}, Landroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;
7855
7856 move-result-object v0
7857
7858 goto/16 :goto_0
7859
7860 .line 3233
7861 :sswitch_9
7862 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
7863
7864 move-result-object v0
7865
7866 const/4 v1, 0x3
7867
7868 invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
7869
7870 move-result-object v0
7871
7872 check-cast v0, Ljava/lang/String;
7873
7874 invoke-static {v0}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
7875
7876 move-result-wide v0
7877
7878 invoke-static {v0, v1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
7879
7880 move-result-object v0
7881
7882 .line 3234
7883 new-instance v1, Landroid/content/ContentValues;
7884
7885 invoke-direct {v1, p3}, Landroid/content/ContentValues;-><init>(Landroid/content/ContentValues;)V
7886
7887 .line 3235
7888 const-string v3, "playlist_id"
7889
7890 invoke-virtual {v1, v3, v0}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
7891
7892 .line 3236
7893 const-string v0, "audio_playlists_map"
7894
7895 const-string v3, "playlist_id"
7896
7897 invoke-virtual {v2, v0, v3, v1}, Landroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
7898
7899 move-result-wide v0
7900
7901 .line 3237
7902 const-wide/16 v2, 0x0
7903
7904 cmp-long v2, v0, v2
7905
7906 if-lez v2, :cond_7
7907
7908 .line 3238
7909 invoke-static {p1, v0, v1}, Landroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;
7910
7911 move-result-object v0
7912
7913 goto/16 :goto_0
7914
7915 .line 3244
7916 :sswitch_a
7917 const/4 v4, 0x3
7918
7919 const/4 v5, 0x1
7920
7921 move-object v0, p0
7922
7923 move-object v2, p1
7924
7925 move-object v3, p3
7926
7927 invoke-direct/range {v0 .. v5}, Lcom/android/providers/media/MediaProvider;->insertFile(Lcom/android/providers/media/MediaProvider$DatabaseHelper;Landroid/net/Uri;Landroid/content/ContentValues;IZ)J
7928
7929 move-result-wide v1
7930
7931 .line 3245
7932 const-wide/16 v3, 0x0
7933
7934 cmp-long v0, v1, v3
7935
7936 if-lez v0, :cond_7
7937
7938 .line 3246
7939 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
7940
7941 move-result-object v0
7942
7943 const/4 v3, 0x0
7944
7945 invoke-interface {v0, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
7946
7947 move-result-object v0
7948
7949 check-cast v0, Ljava/lang/String;
7950
7951 invoke-static {v0}, Landroid/provider/MediaStore$Video$Media;->getContentUri(Ljava/lang/String;)Landroid/net/Uri;
7952
7953 move-result-object v0
7954
7955 invoke-static {v0, v1, v2}, Landroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;
7956
7957 move-result-object v0
7958
7959 goto/16 :goto_0
7960
7961 .line 3253
7962 :sswitch_b
7963 iget-boolean v0, v1, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->mInternal:Z
7964
7965 if-eqz v0, :cond_5
7966
7967 .line 3254
7968 new-instance v0, Ljava/lang/UnsupportedOperationException;
7969
7970 const-string v1, "no internal album art allowed"
7971
7972 invoke-direct {v0, v1}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
7973
7974 throw v0
7975
7976 .line 3258
7977 :cond_5
7978 const/4 v0, 0x0
7979
7980 :try_start_0
7981 const-string v1, ""
7982
7983 const-string v3, "Android/data/com.android.providers.media/albumthumbs"
7984
7985 invoke-direct {p0, v0, p3, v1, v3}, Lcom/android/providers/media/MediaProvider;->ensureFile(ZLandroid/content/ContentValues;Ljava/lang/String;Ljava/lang/String;)Landroid/content/ContentValues;
7986 :try_end_0
7987 .catch Ljava/lang/IllegalStateException; {:try_start_0 .. :try_end_0} :catch_0
7988
7989 move-result-object p3
7990
7991 .line 3263
7992 :goto_3
7993 const-string v0, "album_art"
7994
7995 const-string v1, "_data"
7996
7997 invoke-virtual {v2, v0, v1, p3}, Landroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
7998
7999 move-result-wide v0
8000
8001 .line 3264
8002 const-wide/16 v2, 0x0
8003
8004 cmp-long v2, v0, v2
8005
8006 if-lez v2, :cond_7
8007
8008 .line 3265
8009 invoke-static {p1, v0, v1}, Landroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;
8010
8011 move-result-object v0
8012
8013 goto/16 :goto_0
8014
8015 .line 3271
8016 :sswitch_c
8017 const-string v0, "name"
8018
8019 invoke-virtual {p3, v0}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
8020
8021 move-result-object v0
8022
8023 invoke-direct {p0, v0}, Lcom/android/providers/media/MediaProvider;->attachVolume(Ljava/lang/String;)Landroid/net/Uri;
8024
8025 move-result-object v0
8026
8027 goto/16 :goto_0
8028
8029 .line 3274
8030 :sswitch_d
8031 iget-object v1, p0, Lcom/android/providers/media/MediaProvider;->mMtpServiceConnection:Landroid/content/ServiceConnection;
8032
8033 monitor-enter v1
8034
8035 .line 3275
8036 :try_start_1
8037 iget-object v0, p0, Lcom/android/providers/media/MediaProvider;->mMtpService:Lcom/android/providers/media/IMtpService;
8038
8039 if-nez v0, :cond_6
8040
8041 .line 3276
8042 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
8043
8044 move-result-object v0
8045
8046 .line 3278
8047 new-instance v2, Landroid/content/Intent;
8048
8049 const-class v3, Lcom/android/providers/media/MtpService;
8050
8051 invoke-direct {v2, v0, v3}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V
8052
8053 iget-object v3, p0, Lcom/android/providers/media/MediaProvider;->mMtpServiceConnection:Landroid/content/ServiceConnection;
8054
8055 const/4 v4, 0x1
8056
8057 invoke-virtual {v0, v2, v3, v4}, Landroid/content/Context;->bindService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z
8058
8059 .line 3281
8060 :cond_6
8061 monitor-exit v1
8062
8063 move-object v0, v7
8064
8065 .line 3282
8066 goto/16 :goto_0
8067
8068 .line 3281
8069 :catchall_0
8070 move-exception v0
8071
8072 monitor-exit v1
8073 :try_end_1
8074 .catchall {:try_start_1 .. :try_end_1} :catchall_0
8075
8076 throw v0
8077
8078 .line 3285
8079 :sswitch_e
8080 const/4 v4, 0x0
8081
8082 const/4 v5, 0x1
8083
8084 move-object v0, p0
8085
8086 move-object v2, p1
8087
8088 move-object v3, p3
8089
8090 invoke-direct/range {v0 .. v5}, Lcom/android/providers/media/MediaProvider;->insertFile(Lcom/android/providers/media/MediaProvider$DatabaseHelper;Landroid/net/Uri;Landroid/content/ContentValues;IZ)J
8091
8092 move-result-wide v1
8093
8094 .line 3287
8095 const-wide/16 v3, 0x0
8096
8097 cmp-long v0, v1, v3
8098
8099 if-lez v0, :cond_7
8100
8101 .line 3288
8102 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
8103
8104 move-result-object v0
8105
8106 const/4 v3, 0x0
8107
8108 invoke-interface {v0, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
8109
8110 move-result-object v0
8111
8112 check-cast v0, Ljava/lang/String;
8113
8114 invoke-static {v0, v1, v2}, Landroid/provider/MediaStore$Files;->getContentUri(Ljava/lang/String;J)Landroid/net/Uri;
8115
8116 move-result-object v0
8117
8118 goto/16 :goto_0
8119
8120 .line 3294
8121 :sswitch_f
8122 const/4 v4, 0x0
8123
8124 const/4 v5, 0x0
8125
8126 move-object v0, p0
8127
8128 move-object v2, p1
8129
8130 move-object v3, p3
8131
8132 invoke-direct/range {v0 .. v5}, Lcom/android/providers/media/MediaProvider;->insertFile(Lcom/android/providers/media/MediaProvider$DatabaseHelper;Landroid/net/Uri;Landroid/content/ContentValues;IZ)J
8133
8134 move-result-wide v1
8135
8136 .line 3296
8137 const-wide/16 v3, 0x0
8138
8139 cmp-long v0, v1, v3
8140
8141 if-lez v0, :cond_7
8142
8143 .line 3297
8144 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
8145
8146 move-result-object v0
8147
8148 const/4 v3, 0x0
8149
8150 invoke-interface {v0, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
8151
8152 move-result-object v0
8153
8154 check-cast v0, Ljava/lang/String;
8155
8156 invoke-static {v0, v1, v2}, Landroid/provider/MediaStore$Files;->getMtpObjectsUri(Ljava/lang/String;J)Landroid/net/Uri;
8157
8158 move-result-object v0
8159
8160 goto/16 :goto_0
8161
8162 .line 3259
8163 :catch_0
8164 move-exception v0
8165
8166 goto :goto_3
8167
8168 :cond_7
8169 move-object v0, v7
8170
8171 goto/16 :goto_0
8172
8173 :cond_8
8174 move-object v6, v0
8175
8176 goto/16 :goto_1
8177
8178 .line 3134
8179 :sswitch_data_0
8180 .sparse-switch
8181 0x1 -> :sswitch_0
8182 0x3 -> :sswitch_1
8183 0x64 -> :sswitch_3
8184 0x66 -> :sswitch_4
8185 0x68 -> :sswitch_5
8186 0x6a -> :sswitch_6
8187 0x6c -> :sswitch_7
8188 0x6e -> :sswitch_8
8189 0x6f -> :sswitch_9
8190 0x70 -> :sswitch_9
8191 0x77 -> :sswitch_b
8192 0xc8 -> :sswitch_a
8193 0xca -> :sswitch_2
8194 0x12c -> :sswitch_c
8195 0x2bc -> :sswitch_e
8196 0x2be -> :sswitch_f
8197 0x2c1 -> :sswitch_d
8198 .end sparse-switch
8199.end method
8200
8201.method static isInternalMediaDatabaseName(Ljava/lang/String;)Z
8202 .locals 1
8203 .parameter "name"
8204
8205 .prologue
8206 .line 4462
8207 const-string v0, "internal.db"
8208
8209 invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
8210
8211 move-result v0
8212
8213 if-eqz v0, :cond_0
8214
8215 .line 4463
8216 const/4 v0, 0x1
8217
8218 .line 4465
8219 :goto_0
8220 return v0
8221
8222 :cond_0
8223 const/4 v0, 0x0
8224
8225 goto :goto_0
8226.end method
8227
8228.method static isMediaDatabaseName(Ljava/lang/String;)Z
8229 .locals 2
8230 .parameter "name"
8231
8232 .prologue
8233 const/4 v0, 0x1
8234
8235 .line 4449
8236 const-string v1, "internal.db"
8237
8238 invoke-virtual {v1, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
8239
8240 move-result v1
8241
8242 if-eqz v1, :cond_1
8243
8244 .line 4458
8245 :cond_0
8246 :goto_0
8247 return v0
8248
8249 .line 4452
8250 :cond_1
8251 const-string v1, "external.db"
8252
8253 invoke-virtual {v1, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
8254
8255 move-result v1
8256
8257 if-nez v1, :cond_0
8258
8259 .line 4455
8260 const-string v1, "external-"
8261
8262 invoke-virtual {p0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
8263
8264 move-result v1
8265
8266 if-nez v1, :cond_0
8267
8268 .line 4458
8269 const/4 v0, 0x0
8270
8271 goto :goto_0
8272.end method
8273
8274.method private makeThumbAsync(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;J)V
8275 .locals 4
8276 .parameter "db"
8277 .parameter "path"
8278 .parameter "album_id"
8279
8280 .prologue
8281 .line 3986
8282 iget-object v3, p0, Lcom/android/providers/media/MediaProvider;->mPendingThumbs:Ljava/util/HashSet;
8283
8284 monitor-enter v3
8285
8286 .line 3987
8287 :try_start_0
8288 iget-object v2, p0, Lcom/android/providers/media/MediaProvider;->mPendingThumbs:Ljava/util/HashSet;
8289
8290 invoke-virtual {v2, p2}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z
8291
8292 move-result v2
8293
8294 if-eqz v2, :cond_0
8295
8296 .line 3990
8297 monitor-exit v3
8298
8299 .line 4014
8300 :goto_0
8301 return-void
8302
8303 .line 3993
8304 :cond_0
8305 iget-object v2, p0, Lcom/android/providers/media/MediaProvider;->mPendingThumbs:Ljava/util/HashSet;
8306
8307 invoke-virtual {v2, p2}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
8308
8309 .line 3994
8310 monitor-exit v3
8311 :try_end_0
8312 .catchall {:try_start_0 .. :try_end_0} :catchall_0
8313
8314 .line 3996
8315 new-instance v0, Lcom/android/providers/media/MediaProvider$ThumbData;
8316
8317 const/4 v2, 0x0
8318
8319 invoke-direct {v0, p0, v2}, Lcom/android/providers/media/MediaProvider$ThumbData;-><init>(Lcom/android/providers/media/MediaProvider;Lcom/android/providers/media/MediaProvider$1;)V
8320
8321 .line 3997
8322 .local v0, d:Lcom/android/providers/media/MediaProvider$ThumbData;
8323 iput-object p1, v0, Lcom/android/providers/media/MediaProvider$ThumbData;->db:Landroid/database/sqlite/SQLiteDatabase;
8324
8325 .line 3998
8326 iput-object p2, v0, Lcom/android/providers/media/MediaProvider$ThumbData;->path:Ljava/lang/String;
8327
8328 .line 3999
8329 iput-wide p3, v0, Lcom/android/providers/media/MediaProvider$ThumbData;->album_id:J
8330
8331 .line 4000
8332 iget-object v2, p0, Lcom/android/providers/media/MediaProvider;->mAlbumArtBaseUri:Landroid/net/Uri;
8333
8334 invoke-static {v2, p3, p4}, Landroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;
8335
8336 move-result-object v2
8337
8338 iput-object v2, v0, Lcom/android/providers/media/MediaProvider$ThumbData;->albumart_uri:Landroid/net/Uri;
8339
8340 .line 4007
8341 iget-object v3, p0, Lcom/android/providers/media/MediaProvider;->mThumbRequestStack:Ljava/util/Stack;
8342
8343 monitor-enter v3
8344
8345 .line 4008
8346 :try_start_1
8347 iget-object v2, p0, Lcom/android/providers/media/MediaProvider;->mThumbRequestStack:Ljava/util/Stack;
8348
8349 invoke-virtual {v2, v0}, Ljava/util/Stack;->push(Ljava/lang/Object;)Ljava/lang/Object;
8350
8351 .line 4009
8352 monitor-exit v3
8353 :try_end_1
8354 .catchall {:try_start_1 .. :try_end_1} :catchall_1
8355
8356 .line 4012
8357 iget-object v2, p0, Lcom/android/providers/media/MediaProvider;->mThumbHandler:Landroid/os/Handler;
8358
8359 const/4 v3, 0x1
8360
8361 invoke-virtual {v2, v3}, Landroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
8362
8363 move-result-object v1
8364
8365 .line 4013
8366 .local v1, msg:Landroid/os/Message;
8367 invoke-virtual {v1}, Landroid/os/Message;->sendToTarget()V
8368
8369 goto :goto_0
8370
8371 .line 3994
8372 .end local v0 #d:Lcom/android/providers/media/MediaProvider$ThumbData;
8373 .end local v1 #msg:Landroid/os/Message;
8374 :catchall_0
8375 move-exception v2
8376
8377 :try_start_2
8378 monitor-exit v3
8379 :try_end_2
8380 .catchall {:try_start_2 .. :try_end_2} :catchall_0
8381
8382 throw v2
8383
8384 .line 4009
8385 .restart local v0 #d:Lcom/android/providers/media/MediaProvider$ThumbData;
8386 :catchall_1
8387 move-exception v2
8388
8389 :try_start_3
8390 monitor-exit v3
8391 :try_end_3
8392 .catchall {:try_start_3 .. :try_end_3} :catchall_1
8393
8394 throw v2
8395.end method
8396
8397.method private makeThumbInternal(Lcom/android/providers/media/MediaProvider$ThumbData;)Landroid/os/ParcelFileDescriptor;
8398 .locals 9
8399 .parameter
8400
8401 .prologue
8402 const/4 v1, 0x1
8403
8404 const/4 v2, 0x0
8405
8406 const/4 v0, 0x0
8407
8408 .line 4193
8409 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
8410
8411 move-result-object v3
8412
8413 iget-object v4, p1, Lcom/android/providers/media/MediaProvider$ThumbData;->path:Ljava/lang/String;
8414
8415 invoke-static {v3, v4}, Lcom/android/providers/media/MediaProvider;->getCompressedAlbumArt(Landroid/content/Context;Ljava/lang/String;)[B
8416
8417 move-result-object v4
8418
8419 .line 4195
8420 if-nez v4, :cond_1
8421
8422 .line 4277
8423 :cond_0
8424 :goto_0
8425 return-object v2
8426
8427 .line 4204
8428 :cond_1
8429 :try_start_0
8430 new-instance v3, Landroid/graphics/BitmapFactory$Options;
8431
8432 invoke-direct {v3}, Landroid/graphics/BitmapFactory$Options;-><init>()V
8433
8434 .line 4205
8435 const/4 v5, 0x1
8436
8437 iput-boolean v5, v3, Landroid/graphics/BitmapFactory$Options;->inJustDecodeBounds:Z
8438
8439 .line 4206
8440 const/4 v5, 0x1
8441
8442 iput v5, v3, Landroid/graphics/BitmapFactory$Options;->inSampleSize:I
8443
8444 .line 4207
8445 const/4 v5, 0x0
8446
8447 array-length v6, v4
8448
8449 invoke-static {v4, v5, v6, v3}, Landroid/graphics/BitmapFactory;->decodeByteArray([BIILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
8450
8451 .line 4210
8452 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
8453
8454 move-result-object v5
8455
8456 invoke-virtual {v5}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
8457
8458 move-result-object v5
8459
8460 .line 4211
8461 const/high16 v6, 0x7f03
8462
8463 invoke-virtual {v5, v6}, Landroid/content/res/Resources;->getDimensionPixelSize(I)I
8464
8465 move-result v5
8466
8467 .line 4212
8468 :goto_1
8469 iget v6, v3, Landroid/graphics/BitmapFactory$Options;->outHeight:I
8470
8471 if-gt v6, v5, :cond_2
8472
8473 iget v6, v3, Landroid/graphics/BitmapFactory$Options;->outWidth:I
8474
8475 if-le v6, v5, :cond_4
8476
8477 .line 4213
8478 :cond_2
8479 iget v6, v3, Landroid/graphics/BitmapFactory$Options;->outHeight:I
8480
8481 div-int/lit8 v6, v6, 0x2
8482
8483 iput v6, v3, Landroid/graphics/BitmapFactory$Options;->outHeight:I
8484
8485 .line 4214
8486 iget v6, v3, Landroid/graphics/BitmapFactory$Options;->outWidth:I
8487
8488 div-int/lit8 v6, v6, 0x2
8489
8490 iput v6, v3, Landroid/graphics/BitmapFactory$Options;->outWidth:I
8491
8492 .line 4215
8493 iget v6, v3, Landroid/graphics/BitmapFactory$Options;->inSampleSize:I
8494
8495 mul-int/lit8 v6, v6, 0x2
8496
8497 iput v6, v3, Landroid/graphics/BitmapFactory$Options;->inSampleSize:I
8498 :try_end_0
8499 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
8500
8501 goto :goto_1
8502
8503 .line 4236
8504 :catch_0
8505 move-exception v0
8506
8507 move-object v3, v2
8508
8509 :goto_2
8510 move v0, v1
8511
8512 move-object v1, v3
8513
8514 .line 4239
8515 :goto_3
8516 if-eqz v0, :cond_3
8517
8518 if-eqz v1, :cond_0
8519
8520 .line 4243
8521 :cond_3
8522 iget-object v3, p1, Lcom/android/providers/media/MediaProvider$ThumbData;->albumart_uri:Landroid/net/Uri;
8523
8524 if-nez v3, :cond_6
8525
8526 .line 4247
8527 :try_start_1
8528 const-string v0, "albumthumb"
8529
8530 invoke-static {v4, v0}, Landroid/os/ParcelFileDescriptor;->fromData([BLjava/lang/String;)Landroid/os/ParcelFileDescriptor;
8531 :try_end_1
8532 .catch Ljava/io/IOException; {:try_start_1 .. :try_end_1} :catch_3
8533
8534 move-result-object v2
8535
8536 goto :goto_0
8537
8538 .line 4218
8539 :cond_4
8540 :try_start_2
8541 iget v5, v3, Landroid/graphics/BitmapFactory$Options;->inSampleSize:I
8542
8543 if-ne v5, v1, :cond_5
8544
8545 move-object v1, v2
8546
8547 .line 4221
8548 goto :goto_3
8549
8550 .line 4224
8551 :cond_5
8552 const/4 v0, 0x0
8553
8554 iput-boolean v0, v3, Landroid/graphics/BitmapFactory$Options;->inJustDecodeBounds:Z
8555
8556 .line 4225
8557 sget-object v0, Landroid/graphics/Bitmap$Config;->RGB_565:Landroid/graphics/Bitmap$Config;
8558
8559 iput-object v0, v3, Landroid/graphics/BitmapFactory$Options;->inPreferredConfig:Landroid/graphics/Bitmap$Config;
8560
8561 .line 4226
8562 const/4 v0, 0x0
8563
8564 array-length v5, v4
8565
8566 invoke-static {v4, v0, v5, v3}, Landroid/graphics/BitmapFactory;->decodeByteArray([BIILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
8567 :try_end_2
8568 .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_0
8569
8570 move-result-object v3
8571
8572 .line 4228
8573 if-eqz v3, :cond_a
8574
8575 :try_start_3
8576 invoke-virtual {v3}, Landroid/graphics/Bitmap;->getConfig()Landroid/graphics/Bitmap$Config;
8577
8578 move-result-object v0
8579
8580 if-nez v0, :cond_a
8581
8582 .line 4229
8583 sget-object v0, Landroid/graphics/Bitmap$Config;->RGB_565:Landroid/graphics/Bitmap$Config;
8584
8585 const/4 v5, 0x0
8586
8587 invoke-virtual {v3, v0, v5}, Landroid/graphics/Bitmap;->copy(Landroid/graphics/Bitmap$Config;Z)Landroid/graphics/Bitmap;
8588
8589 move-result-object v0
8590
8591 .line 4230
8592 if-eqz v0, :cond_a
8593
8594 if-eq v0, v3, :cond_a
8595
8596 .line 4231
8597 invoke-virtual {v3}, Landroid/graphics/Bitmap;->recycle()V
8598 :try_end_3
8599 .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_3} :catch_4
8600
8601 move v8, v1
8602
8603 move-object v1, v0
8604
8605 move v0, v8
8606
8607 .line 4232
8608 goto :goto_3
8609
8610 .line 4255
8611 :cond_6
8612 iget-object v3, p1, Lcom/android/providers/media/MediaProvider$ThumbData;->db:Landroid/database/sqlite/SQLiteDatabase;
8613
8614 invoke-virtual {v3}, Landroid/database/sqlite/SQLiteDatabase;->beginTransaction()V
8615
8616 .line 4257
8617 :try_start_4
8618 iget-object v3, p1, Lcom/android/providers/media/MediaProvider$ThumbData;->db:Landroid/database/sqlite/SQLiteDatabase;
8619
8620 iget-wide v5, p1, Lcom/android/providers/media/MediaProvider$ThumbData;->album_id:J
8621
8622 iget-object v7, p1, Lcom/android/providers/media/MediaProvider$ThumbData;->albumart_uri:Landroid/net/Uri;
8623
8624 invoke-virtual {p0, v3, v5, v6, v7}, Lcom/android/providers/media/MediaProvider;->getAlbumArtOutputUri(Landroid/database/sqlite/SQLiteDatabase;JLandroid/net/Uri;)Landroid/net/Uri;
8625
8626 move-result-object v3
8627
8628 .line 4259
8629 if-eqz v3, :cond_8
8630
8631 .line 4260
8632 invoke-direct {p0, v0, v3, v4, v1}, Lcom/android/providers/media/MediaProvider;->writeAlbumArt(ZLandroid/net/Uri;[BLandroid/graphics/Bitmap;)V
8633
8634 .line 4261
8635 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
8636
8637 move-result-object v0
8638
8639 invoke-virtual {v0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
8640
8641 move-result-object v0
8642
8643 sget-object v4, Lcom/android/providers/media/MediaProvider;->MEDIA_URI:Landroid/net/Uri;
8644
8645 const/4 v5, 0x0
8646
8647 invoke-virtual {v0, v4, v5}, Landroid/content/ContentResolver;->notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;)V
8648
8649 .line 4262
8650 const-string v0, "r"
8651
8652 invoke-virtual {p0, v3, v0}, Lcom/android/providers/media/MediaProvider;->openFileHelper(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
8653
8654 move-result-object v0
8655
8656 .line 4263
8657 iget-object v3, p1, Lcom/android/providers/media/MediaProvider$ThumbData;->db:Landroid/database/sqlite/SQLiteDatabase;
8658
8659 invoke-virtual {v3}, Landroid/database/sqlite/SQLiteDatabase;->setTransactionSuccessful()V
8660 :try_end_4
8661 .catchall {:try_start_4 .. :try_end_4} :catchall_0
8662 .catch Ljava/io/FileNotFoundException; {:try_start_4 .. :try_end_4} :catch_1
8663 .catch Ljava/lang/UnsupportedOperationException; {:try_start_4 .. :try_end_4} :catch_2
8664
8665 .line 4271
8666 iget-object v2, p1, Lcom/android/providers/media/MediaProvider$ThumbData;->db:Landroid/database/sqlite/SQLiteDatabase;
8667
8668 invoke-virtual {v2}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V
8669
8670 .line 4272
8671 if-eqz v1, :cond_7
8672
8673 .line 4273
8674 invoke-virtual {v1}, Landroid/graphics/Bitmap;->recycle()V
8675
8676 :cond_7
8677 move-object v2, v0
8678
8679 goto/16 :goto_0
8680
8681 .line 4271
8682 :cond_8
8683 iget-object v0, p1, Lcom/android/providers/media/MediaProvider$ThumbData;->db:Landroid/database/sqlite/SQLiteDatabase;
8684
8685 invoke-virtual {v0}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V
8686
8687 .line 4272
8688 if-eqz v1, :cond_0
8689
8690 .line 4273
8691 invoke-virtual {v1}, Landroid/graphics/Bitmap;->recycle()V
8692
8693 goto/16 :goto_0
8694
8695 .line 4266
8696 :catch_1
8697 move-exception v0
8698
8699 .line 4271
8700 iget-object v0, p1, Lcom/android/providers/media/MediaProvider$ThumbData;->db:Landroid/database/sqlite/SQLiteDatabase;
8701
8702 invoke-virtual {v0}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V
8703
8704 .line 4272
8705 if-eqz v1, :cond_0
8706
8707 .line 4273
8708 invoke-virtual {v1}, Landroid/graphics/Bitmap;->recycle()V
8709
8710 goto/16 :goto_0
8711
8712 .line 4268
8713 :catch_2
8714 move-exception v0
8715
8716 .line 4271
8717 iget-object v0, p1, Lcom/android/providers/media/MediaProvider$ThumbData;->db:Landroid/database/sqlite/SQLiteDatabase;
8718
8719 invoke-virtual {v0}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V
8720
8721 .line 4272
8722 if-eqz v1, :cond_0
8723
8724 .line 4273
8725 invoke-virtual {v1}, Landroid/graphics/Bitmap;->recycle()V
8726
8727 goto/16 :goto_0
8728
8729 .line 4271
8730 :catchall_0
8731 move-exception v0
8732
8733 iget-object v2, p1, Lcom/android/providers/media/MediaProvider$ThumbData;->db:Landroid/database/sqlite/SQLiteDatabase;
8734
8735 invoke-virtual {v2}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V
8736
8737 .line 4272
8738 if-eqz v1, :cond_9
8739
8740 .line 4273
8741 invoke-virtual {v1}, Landroid/graphics/Bitmap;->recycle()V
8742
8743 :cond_9
8744 throw v0
8745
8746 .line 4248
8747 :catch_3
8748 move-exception v0
8749
8750 goto/16 :goto_0
8751
8752 .line 4236
8753 :catch_4
8754 move-exception v0
8755
8756 goto/16 :goto_2
8757
8758 :cond_a
8759 move v0, v1
8760
8761 move-object v1, v3
8762
8763 goto/16 :goto_3
8764.end method
8765
8766.method private matchThumbRequest(Lcom/android/providers/media/MediaThumbRequest;IJJZ)Z
8767 .locals 7
8768 .parameter "req"
8769 .parameter "pid"
8770 .parameter "id"
8771 .parameter "gid"
8772 .parameter "isVideo"
8773
8774 .prologue
8775 const-wide/16 v5, -0x1
8776
8777 const/4 v2, 0x1
8778
8779 const/4 v3, 0x0
8780
8781 .line 1820
8782 cmp-long v4, p3, v5
8783
8784 if-nez v4, :cond_2
8785
8786 move v1, v2
8787
8788 .line 1821
8789 .local v1, cancelAllOrigId:Z
8790 :goto_0
8791 cmp-long v4, p5, v5
8792
8793 if-nez v4, :cond_3
8794
8795 move v0, v2
8796
8797 .line 1822
8798 .local v0, cancelAllGroupId:Z
8799 :goto_1
8800 iget v4, p1, Lcom/android/providers/media/MediaThumbRequest;->mCallingPid:I
8801
8802 if-ne v4, p2, :cond_4
8803
8804 if-nez v0, :cond_0
8805
8806 iget-wide v4, p1, Lcom/android/providers/media/MediaThumbRequest;->mGroupId:J
8807
8808 cmp-long v4, v4, p5
8809
8810 if-nez v4, :cond_4
8811
8812 :cond_0
8813 if-nez v1, :cond_1
8814
8815 iget-wide v4, p1, Lcom/android/providers/media/MediaThumbRequest;->mOrigId:J
8816
8817 cmp-long v4, v4, p3
8818
8819 if-nez v4, :cond_4
8820
8821 :cond_1
8822 iget-boolean v4, p1, Lcom/android/providers/media/MediaThumbRequest;->mIsVideo:Z
8823
8824 if-ne v4, p7, :cond_4
8825
8826 :goto_2
8827 return v2
8828
8829 .end local v0 #cancelAllGroupId:Z
8830 .end local v1 #cancelAllOrigId:Z
8831 :cond_2
8832 move v1, v3
8833
8834 .line 1820
8835 goto :goto_0
8836
8837 .restart local v1 #cancelAllOrigId:Z
8838 :cond_3
8839 move v0, v3
8840
8841 .line 1821
8842 goto :goto_1
8843
8844 .restart local v0 #cancelAllGroupId:Z
8845 :cond_4
8846 move v2, v3
8847
8848 .line 1822
8849 goto :goto_2
8850.end method
8851
8852.method private movePlaylistEntry(Landroid/database/sqlite/SQLiteDatabase;JII)I
8853 .locals 4
8854 .parameter
8855 .parameter
8856 .parameter
8857 .parameter
8858
8859 .prologue
8860 .line 3857
8861 if-ne p4, p5, :cond_0
8862
8863 .line 3858
8864 const/4 v0, 0x0
8865
8866 .line 3888
8867 :goto_0
8868 return v0
8869
8870 .line 3860
8871 :cond_0
8872 invoke-virtual {p1}, Landroid/database/sqlite/SQLiteDatabase;->beginTransaction()V
8873
8874 .line 3863
8875 :try_start_0
8876 new-instance v0, Ljava/lang/StringBuilder;
8877
8878 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
8879
8880 const-string v1, "UPDATE audio_playlists_map SET play_order=-1 WHERE play_order="
8881
8882 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
8883
8884 move-result-object v0
8885
8886 invoke-virtual {v0, p4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
8887
8888 move-result-object v0
8889
8890 const-string v1, " AND playlist_id="
8891
8892 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
8893
8894 move-result-object v0
8895
8896 invoke-virtual {v0, p2, p3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
8897
8898 move-result-object v0
8899
8900 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
8901
8902 move-result-object v0
8903
8904 invoke-virtual {p1, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
8905
8906 .line 3869
8907 if-ge p4, p5, :cond_1
8908
8909 .line 3870
8910 new-instance v0, Ljava/lang/StringBuilder;
8911
8912 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
8913
8914 const-string v1, "UPDATE audio_playlists_map SET play_order=play_order-1 WHERE play_order<="
8915
8916 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
8917
8918 move-result-object v0
8919
8920 invoke-virtual {v0, p5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
8921
8922 move-result-object v0
8923
8924 const-string v1, " AND play_order>"
8925
8926 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
8927
8928 move-result-object v0
8929
8930 invoke-virtual {v0, p4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
8931
8932 move-result-object v0
8933
8934 const-string v1, " AND playlist_id="
8935
8936 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
8937
8938 move-result-object v0
8939
8940 invoke-virtual {v0, p2, p3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
8941
8942 move-result-object v0
8943
8944 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
8945
8946 move-result-object v0
8947
8948 invoke-virtual {p1, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
8949
8950 .line 3873
8951 sub-int v0, p5, p4
8952
8953 add-int/lit8 v0, v0, 0x1
8954
8955 .line 3880
8956 :goto_1
8957 new-instance v1, Ljava/lang/StringBuilder;
8958
8959 invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
8960
8961 const-string v2, "UPDATE audio_playlists_map SET play_order="
8962
8963 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
8964
8965 move-result-object v1
8966
8967 invoke-virtual {v1, p5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
8968
8969 move-result-object v1
8970
8971 const-string v2, " WHERE play_order=-1 AND playlist_id="
8972
8973 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
8974
8975 move-result-object v1
8976
8977 invoke-virtual {v1, p2, p3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
8978
8979 move-result-object v1
8980
8981 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
8982
8983 move-result-object v1
8984
8985 invoke-virtual {p1, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
8986
8987 .line 3882
8988 invoke-virtual {p1}, Landroid/database/sqlite/SQLiteDatabase;->setTransactionSuccessful()V
8989
8990 .line 3883
8991 sget-object v1, Landroid/provider/MediaStore$Audio$Playlists;->EXTERNAL_CONTENT_URI:Landroid/net/Uri;
8992
8993 invoke-virtual {v1}, Landroid/net/Uri;->buildUpon()Landroid/net/Uri$Builder;
8994
8995 move-result-object v1
8996
8997 invoke-static {p2, p3}, Ljava/lang/String;->valueOf(J)Ljava/lang/String;
8998
8999 move-result-object v2
9000
9001 invoke-virtual {v1, v2}, Landroid/net/Uri$Builder;->appendEncodedPath(Ljava/lang/String;)Landroid/net/Uri$Builder;
9002
9003 move-result-object v1
9004
9005 invoke-virtual {v1}, Landroid/net/Uri$Builder;->build()Landroid/net/Uri;
9006
9007 move-result-object v1
9008
9009 .line 3885
9010 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
9011
9012 move-result-object v2
9013
9014 invoke-virtual {v2}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
9015
9016 move-result-object v2
9017
9018 const/4 v3, 0x0
9019
9020 invoke-virtual {v2, v1, v3}, Landroid/content/ContentResolver;->notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;)V
9021 :try_end_0
9022 .catchall {:try_start_0 .. :try_end_0} :catchall_0
9023
9024 .line 3888
9025 invoke-virtual {p1}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V
9026
9027 goto/16 :goto_0
9028
9029 .line 3875
9030 :cond_1
9031 :try_start_1
9032 new-instance v0, Ljava/lang/StringBuilder;
9033
9034 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
9035
9036 const-string v1, "UPDATE audio_playlists_map SET play_order=play_order+1 WHERE play_order>="
9037
9038 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9039
9040 move-result-object v0
9041
9042 invoke-virtual {v0, p5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
9043
9044 move-result-object v0
9045
9046 const-string v1, " AND play_order<"
9047
9048 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9049
9050 move-result-object v0
9051
9052 invoke-virtual {v0, p4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
9053
9054 move-result-object v0
9055
9056 const-string v1, " AND playlist_id="
9057
9058 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9059
9060 move-result-object v0
9061
9062 invoke-virtual {v0, p2, p3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
9063
9064 move-result-object v0
9065
9066 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
9067
9068 move-result-object v0
9069
9070 invoke-virtual {p1, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
9071 :try_end_1
9072 .catchall {:try_start_1 .. :try_end_1} :catchall_0
9073
9074 .line 3878
9075 sub-int v0, p4, p5
9076
9077 add-int/lit8 v0, v0, 0x1
9078
9079 goto :goto_1
9080
9081 .line 3888
9082 :catchall_0
9083 move-exception v0
9084
9085 invoke-virtual {p1}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V
9086
9087 throw v0
9088.end method
9089
9090.method private playlistBulkInsert(Landroid/database/sqlite/SQLiteDatabase;Landroid/net/Uri;[Landroid/content/ContentValues;)I
9091 .locals 15
9092 .parameter "db"
9093 .parameter "uri"
9094 .parameter "values"
9095
9096 .prologue
9097 .line 2521
9098 new-instance v4, Landroid/database/DatabaseUtils$InsertHelper;
9099
9100 const-string v13, "audio_playlists_map"
9101
9102 move-object/from16 v0, p1
9103
9104 invoke-direct {v4, v0, v13}, Landroid/database/DatabaseUtils$InsertHelper;-><init>(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)V
9105
9106 .line 2523
9107 .local v4, helper:Landroid/database/DatabaseUtils$InsertHelper;
9108 const-string v13, "audio_id"
9109
9110 invoke-virtual {v4, v13}, Landroid/database/DatabaseUtils$InsertHelper;->getColumnIndex(Ljava/lang/String;)I
9111
9112 move-result v3
9113
9114 .line 2524
9115 .local v3, audioidcolidx:I
9116 const-string v13, "playlist_id"
9117
9118 invoke-virtual {v4, v13}, Landroid/database/DatabaseUtils$InsertHelper;->getColumnIndex(Ljava/lang/String;)I
9119
9120 move-result v10
9121
9122 .line 2525
9123 .local v10, playlistididx:I
9124 const-string v13, "play_order"
9125
9126 invoke-virtual {v4, v13}, Landroid/database/DatabaseUtils$InsertHelper;->getColumnIndex(Ljava/lang/String;)I
9127
9128 move-result v12
9129
9130 .line 2526
9131 .local v12, playorderidx:I
9132 invoke-virtual/range {p2 .. p2}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
9133
9134 move-result-object v13
9135
9136 const/4 v14, 0x3
9137
9138 invoke-interface {v13, v14}, Ljava/util/List;->get(I)Ljava/lang/Object;
9139
9140 move-result-object v13
9141
9142 check-cast v13, Ljava/lang/String;
9143
9144 invoke-static {v13}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
9145
9146 move-result-wide v8
9147
9148 .line 2528
9149 .local v8, playlistId:J
9150 invoke-virtual/range {p1 .. p1}, Landroid/database/sqlite/SQLiteDatabase;->beginTransaction()V
9151
9152 .line 2529
9153 const/4 v7, 0x0
9154
9155 .line 2531
9156 .local v7, numInserted:I
9157 :try_start_0
9158 move-object/from16 v0, p3
9159
9160 array-length v6, v0
9161
9162 .line 2532
9163 .local v6, len:I
9164 const/4 v5, 0x0
9165
9166 .local v5, i:I
9167 :goto_0
9168 if-ge v5, v6, :cond_0
9169
9170 .line 2533
9171 invoke-virtual {v4}, Landroid/database/DatabaseUtils$InsertHelper;->prepareForInsert()V
9172
9173 .line 2537
9174 aget-object v13, p3, v5
9175
9176 const-string v14, "audio_id"
9177
9178 invoke-virtual {v13, v14}, Landroid/content/ContentValues;->get(Ljava/lang/String;)Ljava/lang/Object;
9179
9180 move-result-object v13
9181
9182 check-cast v13, Ljava/lang/Number;
9183
9184 invoke-virtual {v13}, Ljava/lang/Number;->longValue()J
9185
9186 move-result-wide v1
9187
9188 .line 2539
9189 .local v1, audioid:J
9190 invoke-virtual {v4, v3, v1, v2}, Landroid/database/DatabaseUtils$InsertHelper;->bind(IJ)V
9191
9192 .line 2540
9193 invoke-virtual {v4, v10, v8, v9}, Landroid/database/DatabaseUtils$InsertHelper;->bind(IJ)V
9194
9195 .line 2542
9196 aget-object v13, p3, v5
9197
9198 const-string v14, "play_order"
9199
9200 invoke-virtual {v13, v14}, Landroid/content/ContentValues;->get(Ljava/lang/String;)Ljava/lang/Object;
9201
9202 move-result-object v13
9203
9204 check-cast v13, Ljava/lang/Number;
9205
9206 invoke-virtual {v13}, Ljava/lang/Number;->intValue()I
9207
9208 move-result v11
9209
9210 .line 2544
9211 .local v11, playorder:I
9212 invoke-virtual {v4, v12, v11}, Landroid/database/DatabaseUtils$InsertHelper;->bind(II)V
9213
9214 .line 2545
9215 invoke-virtual {v4}, Landroid/database/DatabaseUtils$InsertHelper;->execute()J
9216
9217 .line 2532
9218 add-int/lit8 v5, v5, 0x1
9219
9220 goto :goto_0
9221
9222 .line 2547
9223 .end local v1 #audioid:J
9224 .end local v11 #playorder:I
9225 :cond_0
9226 move v7, v6
9227
9228 .line 2548
9229 invoke-virtual/range {p1 .. p1}, Landroid/database/sqlite/SQLiteDatabase;->setTransactionSuccessful()V
9230 :try_end_0
9231 .catchall {:try_start_0 .. :try_end_0} :catchall_0
9232
9233 .line 2550
9234 invoke-virtual/range {p1 .. p1}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V
9235
9236 .line 2551
9237 invoke-virtual {v4}, Landroid/database/DatabaseUtils$InsertHelper;->close()V
9238
9239 .line 2553
9240 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
9241
9242 move-result-object v13
9243
9244 invoke-virtual {v13}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
9245
9246 move-result-object v13
9247
9248 const/4 v14, 0x0
9249
9250 move-object/from16 v0, p2
9251
9252 invoke-virtual {v13, v0, v14}, Landroid/content/ContentResolver;->notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;)V
9253
9254 .line 2554
9255 return v7
9256
9257 .line 2550
9258 .end local v5 #i:I
9259 .end local v6 #len:I
9260 :catchall_0
9261 move-exception v13
9262
9263 invoke-virtual/range {p1 .. p1}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V
9264
9265 .line 2551
9266 invoke-virtual {v4}, Landroid/database/DatabaseUtils$InsertHelper;->close()V
9267
9268 throw v13
9269.end method
9270
9271.method private queryThumbnail(Landroid/database/sqlite/SQLiteQueryBuilder;Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Z)Z
9272 .locals 11
9273 .parameter
9274 .parameter
9275 .parameter
9276 .parameter
9277 .parameter
9278
9279 .prologue
9280 .line 1830
9281 invoke-virtual {p1, p3}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
9282
9283 .line 1831
9284 if-eqz p5, :cond_0
9285
9286 .line 1834
9287 new-instance v0, Ljava/lang/StringBuilder;
9288
9289 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
9290
9291 const-string v1, "_id = "
9292
9293 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9294
9295 move-result-object v1
9296
9297 invoke-virtual {p2}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
9298
9299 move-result-object v0
9300
9301 const/4 v2, 0x3
9302
9303 invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
9304
9305 move-result-object v0
9306
9307 check-cast v0, Ljava/lang/String;
9308
9309 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9310
9311 move-result-object v0
9312
9313 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
9314
9315 move-result-object v0
9316
9317 invoke-virtual {p1, v0}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
9318
9319 .line 1836
9320 const/4 v0, 0x1
9321
9322 .line 1893
9323 :goto_0
9324 return v0
9325
9326 .line 1838
9327 :cond_0
9328 const-string v0, "orig_id"
9329
9330 invoke-virtual {p2, v0}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
9331
9332 move-result-object v8
9333
9334 .line 1840
9335 if-nez v8, :cond_1
9336
9337 .line 1842
9338 const/4 v0, 0x1
9339
9340 goto :goto_0
9341
9342 .line 1845
9343 :cond_1
9344 const-string v0, "1"
9345
9346 const-string v1, "blocking"
9347
9348 invoke-virtual {p2, v1}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
9349
9350 move-result-object v1
9351
9352 invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
9353
9354 move-result v0
9355
9356 .line 1846
9357 const-string v1, "1"
9358
9359 const-string v2, "cancel"
9360
9361 invoke-virtual {p2, v2}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
9362
9363 move-result-object v2
9364
9365 invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
9366
9367 move-result v1
9368
9369 .line 1847
9370 invoke-virtual {p2}, Landroid/net/Uri;->buildUpon()Landroid/net/Uri$Builder;
9371
9372 move-result-object v2
9373
9374 invoke-virtual {p2}, Landroid/net/Uri;->getPath()Ljava/lang/String;
9375
9376 move-result-object v3
9377
9378 const-string v4, "thumbnails"
9379
9380 const-string v5, "media"
9381
9382 invoke-virtual {v3, v4, v5}, Ljava/lang/String;->replaceFirst(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
9383
9384 move-result-object v3
9385
9386 invoke-virtual {v2, v3}, Landroid/net/Uri$Builder;->encodedPath(Ljava/lang/String;)Landroid/net/Uri$Builder;
9387
9388 move-result-object v2
9389
9390 invoke-virtual {v2, v8}, Landroid/net/Uri$Builder;->appendPath(Ljava/lang/String;)Landroid/net/Uri$Builder;
9391
9392 move-result-object v2
9393
9394 invoke-virtual {v2}, Landroid/net/Uri$Builder;->build()Landroid/net/Uri;
9395
9396 move-result-object v2
9397
9398 .line 1851
9399 if-eqz v0, :cond_2
9400
9401 invoke-direct {p0, v2}, Lcom/android/providers/media/MediaProvider;->waitForThumbnailReady(Landroid/net/Uri;)Z
9402
9403 move-result v0
9404
9405 if-nez v0, :cond_2
9406
9407 .line 1852
9408 sget-object v0, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
9409
9410 const-string v1, "original media doesn\'t exist or it\'s canceled."
9411
9412 invoke-static {v0, v1}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
9413
9414 .line 1853
9415 const/4 v0, 0x0
9416
9417 goto :goto_0
9418
9419 .line 1854
9420 :cond_2
9421 if-eqz v1, :cond_6
9422
9423 .line 1855
9424 const-string v0, "group_id"
9425
9426 invoke-virtual {p2, v0}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
9427
9428 move-result-object v0
9429
9430 .line 1856
9431 const-string v1, "video"
9432
9433 invoke-virtual {p2}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
9434
9435 move-result-object v2
9436
9437 const/4 v3, 0x1
9438
9439 invoke-interface {v2, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
9440
9441 move-result-object v2
9442
9443 invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
9444
9445 move-result v7
9446
9447 .line 1857
9448 invoke-static {}, Landroid/os/Binder;->getCallingPid()I
9449
9450 move-result v2
9451
9452 .line 1862
9453 :try_start_0
9454 invoke-static {v8}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
9455
9456 move-result-wide v3
9457
9458 .line 1863
9459 invoke-static {v0}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
9460 :try_end_0
9461 .catch Ljava/lang/NumberFormatException; {:try_start_0 .. :try_end_0} :catch_0
9462
9463 move-result-wide v5
9464
9465 .line 1869
9466 iget-object v9, p0, Lcom/android/providers/media/MediaProvider;->mMediaThumbQueue:Ljava/util/PriorityQueue;
9467
9468 monitor-enter v9
9469
9470 .line 1870
9471 :try_start_1
9472 iget-object v0, p0, Lcom/android/providers/media/MediaProvider;->mCurrentThumbRequest:Lcom/android/providers/media/MediaThumbRequest;
9473
9474 if-eqz v0, :cond_3
9475
9476 iget-object v1, p0, Lcom/android/providers/media/MediaProvider;->mCurrentThumbRequest:Lcom/android/providers/media/MediaThumbRequest;
9477
9478 move-object v0, p0
9479
9480 invoke-direct/range {v0 .. v7}, Lcom/android/providers/media/MediaProvider;->matchThumbRequest(Lcom/android/providers/media/MediaThumbRequest;IJJZ)Z
9481
9482 move-result v0
9483
9484 if-eqz v0, :cond_3
9485
9486 .line 1872
9487 iget-object v1, p0, Lcom/android/providers/media/MediaProvider;->mCurrentThumbRequest:Lcom/android/providers/media/MediaThumbRequest;
9488
9489 monitor-enter v1
9490 :try_end_1
9491 .catchall {:try_start_1 .. :try_end_1} :catchall_0
9492
9493 .line 1873
9494 :try_start_2
9495 iget-object v0, p0, Lcom/android/providers/media/MediaProvider;->mCurrentThumbRequest:Lcom/android/providers/media/MediaThumbRequest;
9496
9497 sget-object v10, Lcom/android/providers/media/MediaThumbRequest$State;->CANCEL:Lcom/android/providers/media/MediaThumbRequest$State;
9498
9499 iput-object v10, v0, Lcom/android/providers/media/MediaThumbRequest;->mState:Lcom/android/providers/media/MediaThumbRequest$State;
9500
9501 .line 1874
9502 iget-object v0, p0, Lcom/android/providers/media/MediaProvider;->mCurrentThumbRequest:Lcom/android/providers/media/MediaThumbRequest;
9503
9504 invoke-virtual {v0}, Ljava/lang/Object;->notifyAll()V
9505
9506 .line 1875
9507 monitor-exit v1
9508 :try_end_2
9509 .catchall {:try_start_2 .. :try_end_2} :catchall_1
9510
9511 .line 1877
9512 :cond_3
9513 :try_start_3
9514 iget-object v0, p0, Lcom/android/providers/media/MediaProvider;->mMediaThumbQueue:Ljava/util/PriorityQueue;
9515
9516 invoke-virtual {v0}, Ljava/util/PriorityQueue;->iterator()Ljava/util/Iterator;
9517
9518 move-result-object v10
9519
9520 :cond_4
9521 :goto_1
9522 invoke-interface {v10}, Ljava/util/Iterator;->hasNext()Z
9523
9524 move-result v0
9525
9526 if-eqz v0, :cond_5
9527
9528 invoke-interface {v10}, Ljava/util/Iterator;->next()Ljava/lang/Object;
9529
9530 move-result-object v1
9531
9532 check-cast v1, Lcom/android/providers/media/MediaThumbRequest;
9533
9534 move-object v0, p0
9535
9536 .line 1878
9537 invoke-direct/range {v0 .. v7}, Lcom/android/providers/media/MediaProvider;->matchThumbRequest(Lcom/android/providers/media/MediaThumbRequest;IJJZ)Z
9538
9539 move-result v0
9540
9541 if-eqz v0, :cond_4
9542
9543 .line 1879
9544 monitor-enter v1
9545 :try_end_3
9546 .catchall {:try_start_3 .. :try_end_3} :catchall_0
9547
9548 .line 1880
9549 :try_start_4
9550 sget-object v0, Lcom/android/providers/media/MediaThumbRequest$State;->CANCEL:Lcom/android/providers/media/MediaThumbRequest$State;
9551
9552 iput-object v0, v1, Lcom/android/providers/media/MediaThumbRequest;->mState:Lcom/android/providers/media/MediaThumbRequest$State;
9553
9554 .line 1881
9555 invoke-virtual {v1}, Ljava/lang/Object;->notifyAll()V
9556
9557 .line 1882
9558 monitor-exit v1
9559 :try_end_4
9560 .catchall {:try_start_4 .. :try_end_4} :catchall_2
9561
9562 .line 1884
9563 :try_start_5
9564 iget-object v0, p0, Lcom/android/providers/media/MediaProvider;->mMediaThumbQueue:Ljava/util/PriorityQueue;
9565
9566 invoke-virtual {v0, v1}, Ljava/util/PriorityQueue;->remove(Ljava/lang/Object;)Z
9567
9568 goto :goto_1
9569
9570 .line 1887
9571 :catchall_0
9572 move-exception v0
9573
9574 monitor-exit v9
9575 :try_end_5
9576 .catchall {:try_start_5 .. :try_end_5} :catchall_0
9577
9578 throw v0
9579
9580 .line 1864
9581 :catch_0
9582 move-exception v0
9583
9584 .line 1866
9585 const/4 v0, 0x0
9586
9587 goto/16 :goto_0
9588
9589 .line 1875
9590 :catchall_1
9591 move-exception v0
9592
9593 :try_start_6
9594 monitor-exit v1
9595 :try_end_6
9596 .catchall {:try_start_6 .. :try_end_6} :catchall_1
9597
9598 :try_start_7
9599 throw v0
9600 :try_end_7
9601 .catchall {:try_start_7 .. :try_end_7} :catchall_0
9602
9603 .line 1882
9604 :catchall_2
9605 move-exception v0
9606
9607 :try_start_8
9608 monitor-exit v1
9609 :try_end_8
9610 .catchall {:try_start_8 .. :try_end_8} :catchall_2
9611
9612 :try_start_9
9613 throw v0
9614
9615 .line 1887
9616 :cond_5
9617 monitor-exit v9
9618 :try_end_9
9619 .catchall {:try_start_9 .. :try_end_9} :catchall_0
9620
9621 .line 1890
9622 :cond_6
9623 if-eqz v8, :cond_7
9624
9625 .line 1891
9626 new-instance v0, Ljava/lang/StringBuilder;
9627
9628 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
9629
9630 invoke-virtual {v0, p4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9631
9632 move-result-object v0
9633
9634 const-string v1, " = "
9635
9636 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9637
9638 move-result-object v0
9639
9640 invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9641
9642 move-result-object v0
9643
9644 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
9645
9646 move-result-object v0
9647
9648 invoke-virtual {p1, v0}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
9649
9650 .line 1893
9651 :cond_7
9652 const/4 v0, 0x1
9653
9654 goto/16 :goto_0
9655.end method
9656
9657.method private static recreateAudioView(Landroid/database/sqlite/SQLiteDatabase;)V
9658 .locals 1
9659 .parameter
9660
9661 .prologue
9662 .line 1636
9663 const-string v0, "DROP VIEW IF EXISTS audio"
9664
9665 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
9666
9667 .line 1637
9668 const-string v0, "DROP TRIGGER IF EXISTS audio_delete"
9669
9670 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
9671
9672 .line 1638
9673 const-string v0, "CREATE VIEW IF NOT EXISTS audio as SELECT * FROM audio_meta LEFT OUTER JOIN artists ON audio_meta.artist_id=artists.artist_id LEFT OUTER JOIN albums ON audio_meta.album_id=albums.album_id;"
9674
9675 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
9676
9677 .line 1642
9678 const-string v0, "CREATE TRIGGER IF NOT EXISTS audio_delete INSTEAD OF DELETE ON audio BEGIN DELETE from audio_meta where _id=old._id;DELETE from audio_playlists_map where audio_id=old._id;DELETE from audio_genres_map where audio_id=old._id;END"
9679
9680 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
9681
9682 .line 1648
9683 return-void
9684.end method
9685
9686.method private requestMediaThumbnail(Ljava/lang/String;Landroid/net/Uri;IJ)Lcom/android/providers/media/MediaThumbRequest;
9687 .locals 11
9688 .parameter "path"
9689 .parameter "uri"
9690 .parameter "priority"
9691 .parameter "magic"
9692
9693 .prologue
9694 .line 3345
9695 iget-object v10, p0, Lcom/android/providers/media/MediaProvider;->mMediaThumbQueue:Ljava/util/PriorityQueue;
9696
9697 monitor-enter v10
9698
9699 .line 3346
9700 const/4 v8, 0x0
9701
9702 .line 3348
9703 .local v8, req:Lcom/android/providers/media/MediaThumbRequest;
9704 :try_start_0
9705 new-instance v0, Lcom/android/providers/media/MediaThumbRequest;
9706
9707 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
9708
9709 move-result-object v1
9710
9711 invoke-virtual {v1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
9712
9713 move-result-object v1
9714
9715 move-object v2, p1
9716
9717 move-object v3, p2
9718
9719 move v4, p3
9720
9721 move-wide v5, p4
9722
9723 invoke-direct/range {v0 .. v6}, Lcom/android/providers/media/MediaThumbRequest;-><init>(Landroid/content/ContentResolver;Ljava/lang/String;Landroid/net/Uri;IJ)V
9724 :try_end_0
9725 .catchall {:try_start_0 .. :try_end_0} :catchall_1
9726 .catch Ljava/lang/Throwable; {:try_start_0 .. :try_end_0} :catch_0
9727
9728 .line 3350
9729 .end local v8 #req:Lcom/android/providers/media/MediaThumbRequest;
9730 .local v0, req:Lcom/android/providers/media/MediaThumbRequest;
9731 :try_start_1
9732 iget-object v1, p0, Lcom/android/providers/media/MediaProvider;->mMediaThumbQueue:Ljava/util/PriorityQueue;
9733
9734 invoke-virtual {v1, v0}, Ljava/util/PriorityQueue;->add(Ljava/lang/Object;)Z
9735
9736 .line 3352
9737 iget-object v1, p0, Lcom/android/providers/media/MediaProvider;->mThumbHandler:Landroid/os/Handler;
9738
9739 const/4 v2, 0x2
9740
9741 invoke-virtual {v1, v2}, Landroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
9742
9743 move-result-object v7
9744
9745 .line 3353
9746 .local v7, msg:Landroid/os/Message;
9747 invoke-virtual {v7}, Landroid/os/Message;->sendToTarget()V
9748 :try_end_1
9749 .catchall {:try_start_1 .. :try_end_1} :catchall_0
9750 .catch Ljava/lang/Throwable; {:try_start_1 .. :try_end_1} :catch_1
9751
9752 .line 3357
9753 .end local v7 #msg:Landroid/os/Message;
9754 :goto_0
9755 :try_start_2
9756 monitor-exit v10
9757
9758 return-object v0
9759
9760 .line 3354
9761 .end local v0 #req:Lcom/android/providers/media/MediaThumbRequest;
9762 .restart local v8 #req:Lcom/android/providers/media/MediaThumbRequest;
9763 :catch_0
9764 move-exception v9
9765
9766 move-object v0, v8
9767
9768 .line 3355
9769 .end local v8 #req:Lcom/android/providers/media/MediaThumbRequest;
9770 .restart local v0 #req:Lcom/android/providers/media/MediaThumbRequest;
9771 .local v9, t:Ljava/lang/Throwable;
9772 :goto_1
9773 sget-object v1, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
9774
9775 invoke-static {v1, v9}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/Throwable;)I
9776
9777 goto :goto_0
9778
9779 .line 3358
9780 .end local v9 #t:Ljava/lang/Throwable;
9781 :catchall_0
9782 move-exception v1
9783
9784 :goto_2
9785 monitor-exit v10
9786 :try_end_2
9787 .catchall {:try_start_2 .. :try_end_2} :catchall_0
9788
9789 throw v1
9790
9791 .end local v0 #req:Lcom/android/providers/media/MediaThumbRequest;
9792 .restart local v8 #req:Lcom/android/providers/media/MediaThumbRequest;
9793 :catchall_1
9794 move-exception v1
9795
9796 move-object v0, v8
9797
9798 .end local v8 #req:Lcom/android/providers/media/MediaThumbRequest;
9799 .restart local v0 #req:Lcom/android/providers/media/MediaThumbRequest;
9800 goto :goto_2
9801
9802 .line 3354
9803 :catch_1
9804 move-exception v9
9805
9806 goto :goto_1
9807.end method
9808
9809.method private static sanityCheck(Landroid/database/sqlite/SQLiteDatabase;I)V
9810 .locals 11
9811 .parameter
9812 .parameter
9813
9814 .prologue
9815 const/4 v10, 0x1
9816
9817 const/4 v9, 0x0
9818
9819 const/4 v3, 0x0
9820
9821 .line 1615
9822 const-string v1, "audio_meta"
9823
9824 new-array v2, v10, [Ljava/lang/String;
9825
9826 const-string v0, "count(*)"
9827
9828 aput-object v0, v2, v9
9829
9830 move-object v0, p0
9831
9832 move-object v4, v3
9833
9834 move-object v5, v3
9835
9836 move-object v6, v3
9837
9838 move-object v7, v3
9839
9840 invoke-virtual/range {v0 .. v7}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
9841
9842 move-result-object v8
9843
9844 .line 1617
9845 const-string v1, "audio_meta"
9846
9847 new-array v2, v10, [Ljava/lang/String;
9848
9849 const-string v0, "count(distinct _data)"
9850
9851 aput-object v0, v2, v9
9852
9853 move-object v0, p0
9854
9855 move-object v4, v3
9856
9857 move-object v5, v3
9858
9859 move-object v6, v3
9860
9861 move-object v7, v3
9862
9863 invoke-virtual/range {v0 .. v7}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
9864
9865 move-result-object v0
9866
9867 .line 1619
9868 invoke-interface {v8}, Landroid/database/Cursor;->moveToFirst()Z
9869
9870 .line 1620
9871 invoke-interface {v0}, Landroid/database/Cursor;->moveToFirst()Z
9872
9873 .line 1621
9874 invoke-interface {v8, v9}, Landroid/database/Cursor;->getInt(I)I
9875
9876 move-result v1
9877
9878 .line 1622
9879 invoke-interface {v0, v9}, Landroid/database/Cursor;->getInt(I)I
9880
9881 move-result v2
9882
9883 .line 1623
9884 invoke-interface {v8}, Landroid/database/Cursor;->close()V
9885
9886 .line 1624
9887 invoke-interface {v0}, Landroid/database/Cursor;->close()V
9888
9889 .line 1625
9890 if-eq v1, v2, :cond_0
9891
9892 .line 1626
9893 sget-object v0, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
9894
9895 new-instance v3, Ljava/lang/StringBuilder;
9896
9897 invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
9898
9899 const-string v4, "audio_meta._data column is not unique while upgrading from schema "
9900
9901 invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9902
9903 move-result-object v3
9904
9905 invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
9906
9907 move-result-object v3
9908
9909 const-string v4, " : "
9910
9911 invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9912
9913 move-result-object v3
9914
9915 invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
9916
9917 move-result-object v1
9918
9919 const-string v3, "/"
9920
9921 invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9922
9923 move-result-object v1
9924
9925 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
9926
9927 move-result-object v1
9928
9929 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
9930
9931 move-result-object v1
9932
9933 invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
9934
9935 .line 1629
9936 const-string v0, "DELETE FROM audio_meta;"
9937
9938 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
9939
9940 .line 1631
9941 :cond_0
9942 return-void
9943.end method
9944
9945.method private sendObjectAdded(J)V
9946 .locals 4
9947 .parameter "objectHandle"
9948
9949 .prologue
9950 .line 2442
9951 iget-object v2, p0, Lcom/android/providers/media/MediaProvider;->mMtpServiceConnection:Landroid/content/ServiceConnection;
9952
9953 monitor-enter v2
9954
9955 .line 2443
9956 :try_start_0
9957 iget-object v1, p0, Lcom/android/providers/media/MediaProvider;->mMtpService:Lcom/android/providers/media/IMtpService;
9958 :try_end_0
9959 .catchall {:try_start_0 .. :try_end_0} :catchall_0
9960
9961 if-eqz v1, :cond_0
9962
9963 .line 2445
9964 :try_start_1
9965 iget-object v1, p0, Lcom/android/providers/media/MediaProvider;->mMtpService:Lcom/android/providers/media/IMtpService;
9966
9967 long-to-int v3, p1
9968
9969 invoke-interface {v1, v3}, Lcom/android/providers/media/IMtpService;->sendObjectAdded(I)V
9970 :try_end_1
9971 .catchall {:try_start_1 .. :try_end_1} :catchall_0
9972 .catch Landroid/os/RemoteException; {:try_start_1 .. :try_end_1} :catch_0
9973
9974 .line 2451
9975 :cond_0
9976 :goto_0
9977 :try_start_2
9978 monitor-exit v2
9979
9980 .line 2452
9981 return-void
9982
9983 .line 2446
9984 :catch_0
9985 move-exception v0
9986
9987 .line 2447
9988 .local v0, e:Landroid/os/RemoteException;
9989 sget-object v1, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
9990
9991 const-string v3, "RemoteException in sendObjectAdded"
9992
9993 invoke-static {v1, v3, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
9994
9995 .line 2448
9996 const/4 v1, 0x0
9997
9998 iput-object v1, p0, Lcom/android/providers/media/MediaProvider;->mMtpService:Lcom/android/providers/media/IMtpService;
9999
10000 goto :goto_0
10001
10002 .line 2451
10003 .end local v0 #e:Landroid/os/RemoteException;
10004 :catchall_0
10005 move-exception v1
10006
10007 monitor-exit v2
10008 :try_end_2
10009 .catchall {:try_start_2 .. :try_end_2} :catchall_0
10010
10011 throw v1
10012.end method
10013
10014.method private sendObjectRemoved(J)V
10015 .locals 4
10016 .parameter "objectHandle"
10017
10018 .prologue
10019 .line 2455
10020 iget-object v2, p0, Lcom/android/providers/media/MediaProvider;->mMtpServiceConnection:Landroid/content/ServiceConnection;
10021
10022 monitor-enter v2
10023
10024 .line 2456
10025 :try_start_0
10026 iget-object v1, p0, Lcom/android/providers/media/MediaProvider;->mMtpService:Lcom/android/providers/media/IMtpService;
10027 :try_end_0
10028 .catchall {:try_start_0 .. :try_end_0} :catchall_0
10029
10030 if-eqz v1, :cond_0
10031
10032 .line 2458
10033 :try_start_1
10034 iget-object v1, p0, Lcom/android/providers/media/MediaProvider;->mMtpService:Lcom/android/providers/media/IMtpService;
10035
10036 long-to-int v3, p1
10037
10038 invoke-interface {v1, v3}, Lcom/android/providers/media/IMtpService;->sendObjectRemoved(I)V
10039 :try_end_1
10040 .catchall {:try_start_1 .. :try_end_1} :catchall_0
10041 .catch Landroid/os/RemoteException; {:try_start_1 .. :try_end_1} :catch_0
10042
10043 .line 2464
10044 :cond_0
10045 :goto_0
10046 :try_start_2
10047 monitor-exit v2
10048
10049 .line 2465
10050 return-void
10051
10052 .line 2459
10053 :catch_0
10054 move-exception v0
10055
10056 .line 2460
10057 .local v0, e:Landroid/os/RemoteException;
10058 sget-object v1, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
10059
10060 const-string v3, "RemoteException in sendObjectRemoved"
10061
10062 invoke-static {v1, v3, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
10063
10064 .line 2461
10065 const/4 v1, 0x0
10066
10067 iput-object v1, p0, Lcom/android/providers/media/MediaProvider;->mMtpService:Lcom/android/providers/media/IMtpService;
10068
10069 goto :goto_0
10070
10071 .line 2464
10072 .end local v0 #e:Landroid/os/RemoteException;
10073 :catchall_0
10074 move-exception v1
10075
10076 monitor-exit v2
10077 :try_end_2
10078 .catchall {:try_start_2 .. :try_end_2} :catchall_0
10079
10080 throw v1
10081.end method
10082
10083.method private setObjectReferences(Landroid/database/sqlite/SQLiteDatabase;I[Landroid/content/ContentValues;)I
10084 .locals 18
10085 .parameter
10086 .parameter
10087 .parameter
10088
10089 .prologue
10090 .line 2997
10091 const-wide/16 v10, 0x0
10092
10093 .line 2998
10094 const-string v3, "files"
10095
10096 sget-object v4, Lcom/android/providers/media/MediaProvider;->mMediaTableColumns:[Ljava/lang/String;
10097
10098 const-string v5, "_id=?"
10099
10100 const/4 v2, 0x1
10101
10102 new-array v6, v2, [Ljava/lang/String;
10103
10104 const/4 v2, 0x0
10105
10106 invoke-static/range {p2 .. p2}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
10107
10108 move-result-object v7
10109
10110 aput-object v7, v6, v2
10111
10112 const/4 v7, 0x0
10113
10114 const/4 v8, 0x0
10115
10116 const/4 v9, 0x0
10117
10118 move-object/from16 v2, p1
10119
10120 invoke-virtual/range {v2 .. v9}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
10121
10122 move-result-object v4
10123
10124 .line 3002
10125 if-eqz v4, :cond_c
10126
10127 :try_start_0
10128 invoke-interface {v4}, Landroid/database/Cursor;->moveToNext()Z
10129
10130 move-result v2
10131
10132 if-eqz v2, :cond_c
10133
10134 .line 3003
10135 const/4 v2, 0x1
10136
10137 invoke-interface {v4, v2}, Landroid/database/Cursor;->getInt(I)I
10138 :try_end_0
10139 .catchall {:try_start_0 .. :try_end_0} :catchall_0
10140
10141 move-result v2
10142
10143 .line 3004
10144 const/4 v3, 0x4
10145
10146 if-eq v2, v3, :cond_1
10147
10148 .line 3006
10149 const/4 v2, 0x0
10150
10151 .line 3011
10152 if-eqz v4, :cond_0
10153
10154 .line 3012
10155 invoke-interface {v4}, Landroid/database/Cursor;->close()V
10156
10157 .line 3063
10158 :cond_0
10159 :goto_0
10160 return v2
10161
10162 .line 3008
10163 :cond_1
10164 const/4 v2, 0x0
10165
10166 :try_start_1
10167 invoke-interface {v4, v2}, Landroid/database/Cursor;->getLong(I)J
10168 :try_end_1
10169 .catchall {:try_start_1 .. :try_end_1} :catchall_0
10170
10171 move-result-wide v2
10172
10173 move-wide v15, v2
10174
10175 .line 3011
10176 :goto_1
10177 if-eqz v4, :cond_2
10178
10179 .line 3012
10180 invoke-interface {v4}, Landroid/database/Cursor;->close()V
10181
10182 .line 3015
10183 :cond_2
10184 const-wide/16 v2, 0x0
10185
10186 cmp-long v2, v15, v2
10187
10188 if-nez v2, :cond_4
10189
10190 .line 3016
10191 const/4 v2, 0x0
10192
10193 goto :goto_0
10194
10195 .line 3011
10196 :catchall_0
10197 move-exception v2
10198
10199 if-eqz v4, :cond_3
10200
10201 .line 3012
10202 invoke-interface {v4}, Landroid/database/Cursor;->close()V
10203
10204 :cond_3
10205 throw v2
10206
10207 .line 3020
10208 :cond_4
10209 const-string v2, "audio_playlists_map"
10210
10211 const-string v3, "playlist_id=?"
10212
10213 const/4 v4, 0x1
10214
10215 new-array v4, v4, [Ljava/lang/String;
10216
10217 const/4 v5, 0x0
10218
10219 invoke-static/range {v15 .. v16}, Ljava/lang/Long;->toString(J)Ljava/lang/String;
10220
10221 move-result-object v6
10222
10223 aput-object v6, v4, v5
10224
10225 move-object/from16 v0, p1
10226
10227 invoke-virtual {v0, v2, v3, v4}, Landroid/database/sqlite/SQLiteDatabase;->delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I
10228
10229 .line 3024
10230 move-object/from16 v0, p3
10231
10232 array-length v0, v0
10233
10234 move/from16 v17, v0
10235
10236 .line 3025
10237 const/4 v10, 0x0
10238
10239 .line 3026
10240 move/from16 v0, v17
10241
10242 new-array v11, v0, [Landroid/content/ContentValues;
10243
10244 .line 3027
10245 const/4 v2, 0x0
10246
10247 move v14, v2
10248
10249 :goto_2
10250 move/from16 v0, v17
10251
10252 if-ge v14, v0, :cond_8
10253
10254 .line 3029
10255 const-wide/16 v12, 0x0
10256
10257 .line 3030
10258 aget-object v2, p3, v14
10259
10260 const-string v3, "_id"
10261
10262 invoke-virtual {v2, v3}, Landroid/content/ContentValues;->getAsLong(Ljava/lang/String;)Ljava/lang/Long;
10263
10264 move-result-object v2
10265
10266 invoke-virtual {v2}, Ljava/lang/Long;->longValue()J
10267
10268 move-result-wide v7
10269
10270 .line 3031
10271 const-string v3, "files"
10272
10273 sget-object v4, Lcom/android/providers/media/MediaProvider;->mMediaTableColumns:[Ljava/lang/String;
10274
10275 const-string v5, "_id=?"
10276
10277 const/4 v2, 0x1
10278
10279 new-array v6, v2, [Ljava/lang/String;
10280
10281 const/4 v2, 0x0
10282
10283 invoke-static {v7, v8}, Ljava/lang/Long;->toString(J)Ljava/lang/String;
10284
10285 move-result-object v7
10286
10287 aput-object v7, v6, v2
10288
10289 const/4 v7, 0x0
10290
10291 const/4 v8, 0x0
10292
10293 const/4 v9, 0x0
10294
10295 move-object/from16 v2, p1
10296
10297 invoke-virtual/range {v2 .. v9}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
10298
10299 move-result-object v4
10300
10301 .line 3035
10302 if-eqz v4, :cond_b
10303
10304 :try_start_2
10305 invoke-interface {v4}, Landroid/database/Cursor;->moveToNext()Z
10306
10307 move-result v2
10308
10309 if-eqz v2, :cond_b
10310
10311 .line 3036
10312 const/4 v2, 0x1
10313
10314 invoke-interface {v4, v2}, Landroid/database/Cursor;->getInt(I)I
10315 :try_end_2
10316 .catchall {:try_start_2 .. :try_end_2} :catchall_1
10317
10318 move-result v2
10319
10320 .line 3037
10321 const/4 v3, 0x2
10322
10323 if-eq v2, v3, :cond_5
10324
10325 .line 3044
10326 if-eqz v4, :cond_a
10327
10328 .line 3045
10329 invoke-interface {v4}, Landroid/database/Cursor;->close()V
10330
10331 move v2, v10
10332
10333 .line 3027
10334 :goto_3
10335 add-int/lit8 v3, v14, 0x1
10336
10337 move v14, v3
10338
10339 move v10, v2
10340
10341 goto :goto_2
10342
10343 .line 3041
10344 :cond_5
10345 const/4 v2, 0x0
10346
10347 :try_start_3
10348 invoke-interface {v4, v2}, Landroid/database/Cursor;->getLong(I)J
10349 :try_end_3
10350 .catchall {:try_start_3 .. :try_end_3} :catchall_1
10351
10352 move-result-wide v2
10353
10354 .line 3044
10355 :goto_4
10356 if-eqz v4, :cond_6
10357
10358 .line 3045
10359 invoke-interface {v4}, Landroid/database/Cursor;->close()V
10360
10361 .line 3048
10362 :cond_6
10363 const-wide/16 v4, 0x0
10364
10365 cmp-long v4, v2, v4
10366
10367 if-eqz v4, :cond_a
10368
10369 .line 3049
10370 new-instance v4, Landroid/content/ContentValues;
10371
10372 invoke-direct {v4}, Landroid/content/ContentValues;-><init>()V
10373
10374 .line 3050
10375 const-string v5, "playlist_id"
10376
10377 invoke-static/range {v15 .. v16}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
10378
10379 move-result-object v6
10380
10381 invoke-virtual {v4, v5, v6}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
10382
10383 .line 3051
10384 const-string v5, "audio_id"
10385
10386 invoke-static {v2, v3}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
10387
10388 move-result-object v2
10389
10390 invoke-virtual {v4, v5, v2}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
10391
10392 .line 3052
10393 const-string v2, "play_order"
10394
10395 invoke-static {v10}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
10396
10397 move-result-object v3
10398
10399 invoke-virtual {v4, v2, v3}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V
10400
10401 .line 3053
10402 add-int/lit8 v2, v10, 0x1
10403
10404 aput-object v4, v11, v10
10405
10406 goto :goto_3
10407
10408 .line 3044
10409 :catchall_1
10410 move-exception v2
10411
10412 if-eqz v4, :cond_7
10413
10414 .line 3045
10415 invoke-interface {v4}, Landroid/database/Cursor;->close()V
10416
10417 :cond_7
10418 throw v2
10419
10420 .line 3056
10421 :cond_8
10422 move/from16 v0, v17
10423
10424 if-ge v10, v0, :cond_9
10425
10426 .line 3059
10427 new-array v2, v10, [Landroid/content/ContentValues;
10428
10429 .line 3060
10430 const/4 v3, 0x0
10431
10432 const/4 v4, 0x0
10433
10434 invoke-static {v11, v3, v2, v4, v10}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
10435
10436 .line 3063
10437 :goto_5
10438 const-string v3, "external"
10439
10440 move-wide v0, v15
10441
10442 invoke-static {v3, v0, v1}, Landroid/provider/MediaStore$Audio$Playlists$Members;->getContentUri(Ljava/lang/String;J)Landroid/net/Uri;
10443
10444 move-result-object v3
10445
10446 move-object/from16 v0, p0
10447
10448 move-object/from16 v1, p1
10449
10450 invoke-direct {v0, v1, v3, v2}, Lcom/android/providers/media/MediaProvider;->playlistBulkInsert(Landroid/database/sqlite/SQLiteDatabase;Landroid/net/Uri;[Landroid/content/ContentValues;)I
10451
10452 move-result v2
10453
10454 goto/16 :goto_0
10455
10456 :cond_9
10457 move-object v2, v11
10458
10459 goto :goto_5
10460
10461 :cond_a
10462 move v2, v10
10463
10464 goto :goto_3
10465
10466 :cond_b
10467 move-wide v2, v12
10468
10469 goto :goto_4
10470
10471 :cond_c
10472 move-wide v15, v10
10473
10474 goto/16 :goto_1
10475.end method
10476
10477.method private static updateBucketNames(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)V
10478 .locals 8
10479 .parameter
10480 .parameter
10481
10482 .prologue
10483 .line 1658
10484 invoke-virtual {p0}, Landroid/database/sqlite/SQLiteDatabase;->beginTransaction()V
10485
10486 .line 1660
10487 const/4 v0, 0x2
10488
10489 :try_start_0
10490 new-array v2, v0, [Ljava/lang/String;
10491
10492 const/4 v0, 0x0
10493
10494 const-string v1, "_id"
10495
10496 aput-object v1, v2, v0
10497
10498 const/4 v0, 0x1
10499
10500 const-string v1, "_data"
10501
10502 aput-object v1, v2, v0
10503
10504 .line 1661
10505 const/4 v3, 0x0
10506
10507 const/4 v4, 0x0
10508
10509 const/4 v5, 0x0
10510
10511 const/4 v6, 0x0
10512
10513 const/4 v7, 0x0
10514
10515 move-object v0, p0
10516
10517 move-object v1, p1
10518
10519 invoke-virtual/range {v0 .. v7}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
10520 :try_end_0
10521 .catchall {:try_start_0 .. :try_end_0} :catchall_1
10522
10523 move-result-object v1
10524
10525 .line 1663
10526 :try_start_1
10527 const-string v0, "_id"
10528
10529 invoke-interface {v1, v0}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I
10530
10531 move-result v0
10532
10533 .line 1664
10534 const-string v2, "_data"
10535
10536 invoke-interface {v1, v2}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I
10537
10538 move-result v2
10539
10540 .line 1665
10541 const/4 v3, 0x1
10542
10543 new-array v3, v3, [Ljava/lang/String;
10544
10545 .line 1666
10546 :goto_0
10547 invoke-interface {v1}, Landroid/database/Cursor;->moveToNext()Z
10548
10549 move-result v4
10550
10551 if-eqz v4, :cond_1
10552
10553 .line 1667
10554 invoke-interface {v1, v2}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
10555
10556 move-result-object v4
10557
10558 .line 1668
10559 const/4 v5, 0x0
10560
10561 invoke-interface {v1, v0}, Landroid/database/Cursor;->getInt(I)I
10562
10563 move-result v6
10564
10565 invoke-static {v6}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
10566
10567 move-result-object v6
10568
10569 aput-object v6, v3, v5
10570
10571 .line 1669
10572 if-eqz v4, :cond_0
10573
10574 .line 1670
10575 new-instance v5, Landroid/content/ContentValues;
10576
10577 invoke-direct {v5}, Landroid/content/ContentValues;-><init>()V
10578
10579 .line 1671
10580 invoke-static {v4, v5}, Lcom/android/providers/media/MediaProvider;->computeBucketValues(Ljava/lang/String;Landroid/content/ContentValues;)V
10581
10582 .line 1672
10583 const-string v4, "_id=?"
10584
10585 invoke-virtual {p0, p1, v5, v4, v3}, Landroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
10586 :try_end_1
10587 .catchall {:try_start_1 .. :try_end_1} :catchall_0
10588
10589 goto :goto_0
10590
10591 .line 1678
10592 :catchall_0
10593 move-exception v0
10594
10595 :try_start_2
10596 invoke-interface {v1}, Landroid/database/Cursor;->close()V
10597
10598 throw v0
10599 :try_end_2
10600 .catchall {:try_start_2 .. :try_end_2} :catchall_1
10601
10602 .line 1682
10603 :catchall_1
10604 move-exception v0
10605
10606 invoke-virtual {p0}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V
10607
10608 throw v0
10609
10610 .line 1674
10611 :cond_0
10612 :try_start_3
10613 sget-object v4, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
10614
10615 new-instance v5, Ljava/lang/StringBuilder;
10616
10617 invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
10618
10619 const-string v6, "null data at id "
10620
10621 invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10622
10623 move-result-object v5
10624
10625 invoke-virtual {v5, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
10626
10627 move-result-object v5
10628
10629 invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
10630
10631 move-result-object v5
10632
10633 invoke-static {v4, v5}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
10634 :try_end_3
10635 .catchall {:try_start_3 .. :try_end_3} :catchall_0
10636
10637 goto :goto_0
10638
10639 .line 1678
10640 :cond_1
10641 :try_start_4
10642 invoke-interface {v1}, Landroid/database/Cursor;->close()V
10643
10644 .line 1680
10645 invoke-virtual {p0}, Landroid/database/sqlite/SQLiteDatabase;->setTransactionSuccessful()V
10646 :try_end_4
10647 .catchall {:try_start_4 .. :try_end_4} :catchall_1
10648
10649 .line 1682
10650 invoke-virtual {p0}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V
10651
10652 .line 1684
10653 return-void
10654.end method
10655
10656.method private static updateDatabase(Landroid/database/sqlite/SQLiteDatabase;ZII)V
10657 .locals 8
10658 .parameter
10659 .parameter
10660 .parameter
10661 .parameter
10662
10663 .prologue
10664 const/16 v7, 0x191
10665
10666 const/16 v0, 0x3f
10667
10668 const/16 v6, 0x198
10669
10670 const/4 v5, 0x0
10671
10672 .line 665
10673 if-eq p3, v6, :cond_0
10674
10675 .line 666
10676 sget-object v0, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
10677
10678 new-instance v1, Ljava/lang/StringBuilder;
10679
10680 invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
10681
10682 const-string v2, "Illegal update request. Got "
10683
10684 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10685
10686 move-result-object v1
10687
10688 invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
10689
10690 move-result-object v1
10691
10692 const-string v2, ", expected "
10693
10694 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10695
10696 move-result-object v1
10697
10698 invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
10699
10700 move-result-object v1
10701
10702 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
10703
10704 move-result-object v1
10705
10706 invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
10707
10708 .line 668
10709 new-instance v0, Ljava/lang/IllegalArgumentException;
10710
10711 invoke-direct {v0}, Ljava/lang/IllegalArgumentException;-><init>()V
10712
10713 throw v0
10714
10715 .line 669
10716 :cond_0
10717 if-le p2, p3, :cond_1
10718
10719 .line 670
10720 sget-object v0, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
10721
10722 new-instance v1, Ljava/lang/StringBuilder;
10723
10724 invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
10725
10726 const-string v2, "Illegal update request: can\'t downgrade from "
10727
10728 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10729
10730 move-result-object v1
10731
10732 invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
10733
10734 move-result-object v1
10735
10736 const-string v2, " to "
10737
10738 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10739
10740 move-result-object v1
10741
10742 invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
10743
10744 move-result-object v1
10745
10746 const-string v2, ". Did you forget to wipe data?"
10747
10748 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10749
10750 move-result-object v1
10751
10752 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
10753
10754 move-result-object v1
10755
10756 invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
10757
10758 .line 672
10759 new-instance v0, Ljava/lang/IllegalArgumentException;
10760
10761 invoke-direct {v0}, Ljava/lang/IllegalArgumentException;-><init>()V
10762
10763 throw v0
10764
10765 .line 683
10766 :cond_1
10767 if-lt p2, v0, :cond_3
10768
10769 const/16 v1, 0x54
10770
10771 if-lt p2, v1, :cond_2
10772
10773 const/16 v1, 0x59
10774
10775 if-le p2, v1, :cond_3
10776
10777 :cond_2
10778 const/16 v1, 0x5c
10779
10780 if-lt p2, v1, :cond_5
10781
10782 const/16 v1, 0x5e
10783
10784 if-gt p2, v1, :cond_5
10785
10786 .line 686
10787 :cond_3
10788 sget-object v1, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
10789
10790 new-instance v2, Ljava/lang/StringBuilder;
10791
10792 invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
10793
10794 const-string v3, "Upgrading media database from version "
10795
10796 invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10797
10798 move-result-object v2
10799
10800 invoke-virtual {v2, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
10801
10802 move-result-object v2
10803
10804 const-string v3, " to "
10805
10806 invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10807
10808 move-result-object v2
10809
10810 invoke-virtual {v2, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
10811
10812 move-result-object v2
10813
10814 const-string v3, ", which will destroy all old data"
10815
10816 invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10817
10818 move-result-object v2
10819
10820 invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
10821
10822 move-result-object v2
10823
10824 invoke-static {v1, v2}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
10825
10826 .line 689
10827 const-string v1, "DROP TABLE IF EXISTS images"
10828
10829 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10830
10831 .line 690
10832 const-string v1, "DROP TRIGGER IF EXISTS images_cleanup"
10833
10834 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10835
10836 .line 691
10837 const-string v1, "DROP TABLE IF EXISTS thumbnails"
10838
10839 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10840
10841 .line 692
10842 const-string v1, "DROP TRIGGER IF EXISTS thumbnails_cleanup"
10843
10844 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10845
10846 .line 693
10847 const-string v1, "DROP TABLE IF EXISTS audio_meta"
10848
10849 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10850
10851 .line 694
10852 const-string v1, "DROP TABLE IF EXISTS artists"
10853
10854 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10855
10856 .line 695
10857 const-string v1, "DROP TABLE IF EXISTS albums"
10858
10859 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10860
10861 .line 696
10862 const-string v1, "DROP TABLE IF EXISTS album_art"
10863
10864 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10865
10866 .line 697
10867 const-string v1, "DROP VIEW IF EXISTS artist_info"
10868
10869 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10870
10871 .line 698
10872 const-string v1, "DROP VIEW IF EXISTS album_info"
10873
10874 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10875
10876 .line 699
10877 const-string v1, "DROP VIEW IF EXISTS artists_albums_map"
10878
10879 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10880
10881 .line 700
10882 const-string v1, "DROP TRIGGER IF EXISTS audio_meta_cleanup"
10883
10884 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10885
10886 .line 701
10887 const-string v1, "DROP TABLE IF EXISTS audio_genres"
10888
10889 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10890
10891 .line 702
10892 const-string v1, "DROP TABLE IF EXISTS audio_genres_map"
10893
10894 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10895
10896 .line 703
10897 const-string v1, "DROP TRIGGER IF EXISTS audio_genres_cleanup"
10898
10899 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10900
10901 .line 704
10902 const-string v1, "DROP TABLE IF EXISTS audio_playlists"
10903
10904 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10905
10906 .line 705
10907 const-string v1, "DROP TABLE IF EXISTS audio_playlists_map"
10908
10909 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10910
10911 .line 706
10912 const-string v1, "DROP TRIGGER IF EXISTS audio_playlists_cleanup"
10913
10914 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10915
10916 .line 707
10917 const-string v1, "DROP TRIGGER IF EXISTS albumart_cleanup1"
10918
10919 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10920
10921 .line 708
10922 const-string v1, "DROP TRIGGER IF EXISTS albumart_cleanup2"
10923
10924 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10925
10926 .line 709
10927 const-string v1, "DROP TABLE IF EXISTS video"
10928
10929 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10930
10931 .line 710
10932 const-string v1, "DROP TRIGGER IF EXISTS video_cleanup"
10933
10934 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10935
10936 .line 711
10937 const-string v1, "DROP TABLE IF EXISTS objects"
10938
10939 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10940
10941 .line 712
10942 const-string v1, "DROP TRIGGER IF EXISTS images_objects_cleanup"
10943
10944 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10945
10946 .line 713
10947 const-string v1, "DROP TRIGGER IF EXISTS audio_objects_cleanup"
10948
10949 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10950
10951 .line 714
10952 const-string v1, "DROP TRIGGER IF EXISTS video_objects_cleanup"
10953
10954 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10955
10956 .line 715
10957 const-string v1, "DROP TRIGGER IF EXISTS playlists_objects_cleanup"
10958
10959 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10960
10961 .line 717
10962 const-string v1, "CREATE TABLE IF NOT EXISTS images (_id INTEGER PRIMARY KEY,_data TEXT,_size INTEGER,_display_name TEXT,mime_type TEXT,title TEXT,date_added INTEGER,date_modified INTEGER,description TEXT,picasa_id TEXT,isprivate INTEGER,latitude DOUBLE,longitude DOUBLE,datetaken INTEGER,orientation INTEGER,mini_thumb_magic INTEGER,bucket_id TEXT,bucket_display_name TEXT);"
10963
10964 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10965
10966 .line 738
10967 const-string v1, "CREATE INDEX IF NOT EXISTS mini_thumb_magic_index on images(mini_thumb_magic);"
10968
10969 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10970
10971 .line 740
10972 const-string v1, "CREATE TRIGGER IF NOT EXISTS images_cleanup DELETE ON images BEGIN DELETE FROM thumbnails WHERE image_id = old._id;SELECT _DELETE_FILE(old._data);END"
10973
10974 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10975
10976 .line 747
10977 const-string v1, "CREATE TABLE IF NOT EXISTS thumbnails (_id INTEGER PRIMARY KEY,_data TEXT,image_id INTEGER,kind INTEGER,width INTEGER,height INTEGER);"
10978
10979 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10980
10981 .line 756
10982 const-string v1, "CREATE INDEX IF NOT EXISTS image_id_index on thumbnails(image_id);"
10983
10984 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10985
10986 .line 758
10987 const-string v1, "CREATE TRIGGER IF NOT EXISTS thumbnails_cleanup DELETE ON thumbnails BEGIN SELECT _DELETE_FILE(old._data);END"
10988
10989 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10990
10991 .line 764
10992 const-string v1, "CREATE TABLE IF NOT EXISTS audio_meta (_id INTEGER PRIMARY KEY,_data TEXT UNIQUE NOT NULL,_display_name TEXT,_size INTEGER,mime_type TEXT,date_added INTEGER,date_modified INTEGER,title TEXT NOT NULL,title_key TEXT NOT NULL,duration INTEGER,artist_id INTEGER,composer TEXT,album_id INTEGER,track INTEGER,year INTEGER CHECK(year!=0),is_ringtone INTEGER,is_music INTEGER,is_alarm INTEGER,is_notification INTEGER);"
10993
10994 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
10995
10996 .line 787
10997 const-string v1, "CREATE TABLE IF NOT EXISTS artists (artist_id INTEGER PRIMARY KEY,artist_key TEXT NOT NULL UNIQUE,artist TEXT NOT NULL);"
10998
10999 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11000
11001 .line 794
11002 const-string v1, "CREATE TABLE IF NOT EXISTS albums (album_id INTEGER PRIMARY KEY,album_key TEXT NOT NULL UNIQUE,album TEXT NOT NULL);"
11003
11004 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11005
11006 .line 800
11007 const-string v1, "CREATE TABLE IF NOT EXISTS album_art (album_id INTEGER PRIMARY KEY,_data TEXT);"
11008
11009 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11010
11011 .line 805
11012 invoke-static {p0}, Lcom/android/providers/media/MediaProvider;->recreateAudioView(Landroid/database/sqlite/SQLiteDatabase;)V
11013
11014 .line 810
11015 const-string v1, "CREATE VIEW IF NOT EXISTS artist_info AS SELECT artist_id AS _id, artist, artist_key, COUNT(DISTINCT album) AS number_of_albums, COUNT(*) AS number_of_tracks FROM audio WHERE is_music=1 GROUP BY artist_key;"
11016
11017 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11018
11019 .line 817
11020 const-string v1, "CREATE VIEW IF NOT EXISTS album_info AS SELECT audio.album_id AS _id, album, album_key, MIN(year) AS minyear, MAX(year) AS maxyear, artist, artist_id, artist_key, count(*) AS numsongs,album_art._data AS album_art FROM audio LEFT OUTER JOIN album_art ON audio.album_id=album_art.album_id WHERE is_music=1 GROUP BY audio.album_id;"
11021
11022 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11023
11024 .line 828
11025 const-string v1, "CREATE VIEW IF NOT EXISTS artists_albums_map AS SELECT DISTINCT artist_id, album_id FROM audio_meta;"
11026
11027 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11028
11029 .line 834
11030 if-nez p1, :cond_4
11031
11032 .line 836
11033 const-string v1, "CREATE TRIGGER IF NOT EXISTS audio_meta_cleanup DELETE ON audio_meta BEGIN DELETE FROM audio_genres_map WHERE audio_id = old._id;DELETE FROM audio_playlists_map WHERE audio_id = old._id;END"
11034
11035 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11036
11037 .line 843
11038 const-string v1, "CREATE TABLE IF NOT EXISTS audio_genres (_id INTEGER PRIMARY KEY,name TEXT NOT NULL);"
11039
11040 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11041
11042 .line 849
11043 const-string v1, "CREATE TABLE IF NOT EXISTS audio_genres_map (_id INTEGER PRIMARY KEY,audio_id INTEGER NOT NULL,genre_id INTEGER NOT NULL);"
11044
11045 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11046
11047 .line 856
11048 const-string v1, "CREATE TRIGGER IF NOT EXISTS audio_genres_cleanup DELETE ON audio_genres BEGIN DELETE FROM audio_genres_map WHERE genre_id = old._id;END"
11049
11050 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11051
11052 .line 862
11053 const-string v1, "CREATE TABLE IF NOT EXISTS audio_playlists (_id INTEGER PRIMARY KEY,_data TEXT,name TEXT NOT NULL,date_added INTEGER,date_modified INTEGER);"
11054
11055 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11056
11057 .line 871
11058 const-string v1, "CREATE TABLE IF NOT EXISTS audio_playlists_map (_id INTEGER PRIMARY KEY,audio_id INTEGER NOT NULL,playlist_id INTEGER NOT NULL,play_order INTEGER NOT NULL);"
11059
11060 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11061
11062 .line 879
11063 const-string v1, "CREATE TRIGGER IF NOT EXISTS audio_playlists_cleanup DELETE ON audio_playlists BEGIN DELETE FROM audio_playlists_map WHERE playlist_id = old._id;SELECT _DELETE_FILE(old._data);END"
11064
11065 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11066
11067 .line 886
11068 const-string v1, "CREATE TRIGGER IF NOT EXISTS albumart_cleanup1 DELETE ON albums BEGIN DELETE FROM album_art WHERE album_id = old.album_id;END"
11069
11070 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11071
11072 .line 892
11073 const-string v1, "CREATE TRIGGER IF NOT EXISTS albumart_cleanup2 DELETE ON album_art BEGIN SELECT _DELETE_FILE(old._data);END"
11074
11075 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11076
11077 .line 899
11078 :cond_4
11079 const-string v1, "CREATE TABLE IF NOT EXISTS video (_id INTEGER PRIMARY KEY,_data TEXT NOT NULL,_display_name TEXT,_size INTEGER,mime_type TEXT,date_added INTEGER,date_modified INTEGER,title TEXT,duration INTEGER,artist TEXT,album TEXT,resolution TEXT,description TEXT,isprivate INTEGER,tags TEXT,category TEXT,language TEXT,mini_thumb_data TEXT,latitude DOUBLE,longitude DOUBLE,datetaken INTEGER,mini_thumb_magic INTEGER);"
11080
11081 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11082
11083 .line 924
11084 const-string v1, "CREATE TRIGGER IF NOT EXISTS video_cleanup DELETE ON video BEGIN SELECT _DELETE_FILE(old._data);END"
11085
11086 invoke-virtual {p0, v1}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11087
11088 move p2, v0
11089
11090 .line 934
11091 :cond_5
11092 const/16 v0, 0x40
11093
11094 if-ge p2, v0, :cond_6
11095
11096 .line 936
11097 const-string v0, "CREATE INDEX IF NOT EXISTS sort_index on images(datetaken ASC, _id ASC);"
11098
11099 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11100
11101 .line 943
11102 :cond_6
11103 const/16 v0, 0x41
11104
11105 if-ge p2, v0, :cond_7
11106
11107 .line 945
11108 const-string v0, "CREATE INDEX IF NOT EXISTS titlekey_index on audio_meta(title_key);"
11109
11110 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11111
11112 .line 951
11113 :cond_7
11114 const/16 v0, 0x43
11115
11116 if-ge p2, v0, :cond_8
11117
11118 .line 953
11119 const-string v0, "CREATE INDEX IF NOT EXISTS albumkey_index on albums(album_key);"
11120
11121 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11122
11123 .line 954
11124 const-string v0, "CREATE INDEX IF NOT EXISTS artistkey_index on artists(artist_key);"
11125
11126 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11127
11128 .line 957
11129 :cond_8
11130 const/16 v0, 0x44
11131
11132 if-ge p2, v0, :cond_9
11133
11134 .line 959
11135 const-string v0, "ALTER TABLE video ADD COLUMN bucket_id TEXT;"
11136
11137 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11138
11139 .line 960
11140 const-string v0, "ALTER TABLE video ADD COLUMN bucket_display_name TEXT"
11141
11142 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11143
11144 .line 966
11145 :cond_9
11146 const/16 v0, 0x45
11147
11148 if-ge p2, v0, :cond_a
11149
11150 .line 967
11151 const-string v0, "images"
11152
11153 invoke-static {p0, v0}, Lcom/android/providers/media/MediaProvider;->updateDisplayName(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)V
11154
11155 .line 970
11156 :cond_a
11157 const/16 v0, 0x46
11158
11159 if-ge p2, v0, :cond_b
11160
11161 .line 972
11162 const-string v0, "ALTER TABLE video ADD COLUMN bookmark INTEGER;"
11163
11164 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11165
11166 .line 975
11167 :cond_b
11168 const/16 v0, 0x47
11169
11170 if-ge p2, v0, :cond_c
11171
11172 .line 982
11173 const-string v0, "UPDATE audio_meta SET date_modified=0 WHERE _id IN (SELECT _id FROM audio where mime_type=\'audio/mp4\' AND artist=\'<unknown>\' AND album=\'<unknown>\');"
11174
11175 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11176
11177 .line 989
11178 :cond_c
11179 const/16 v0, 0x48
11180
11181 if-ge p2, v0, :cond_d
11182
11183 .line 991
11184 const-string v0, "ALTER TABLE audio_meta ADD COLUMN is_podcast INTEGER;"
11185
11186 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11187
11188 .line 992
11189 const-string v0, "UPDATE audio_meta SET is_podcast=1 WHERE _data LIKE \'%/podcasts/%\';"
11190
11191 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11192
11193 .line 993
11194 const-string v0, "UPDATE audio_meta SET is_music=0 WHERE is_podcast=1 AND _data NOT LIKE \'%/music/%\';"
11195
11196 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11197
11198 .line 995
11199 const-string v0, "ALTER TABLE audio_meta ADD COLUMN bookmark INTEGER;"
11200
11201 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11202
11203 .line 1001
11204 invoke-static {p0}, Lcom/android/providers/media/MediaProvider;->recreateAudioView(Landroid/database/sqlite/SQLiteDatabase;)V
11205
11206 .line 1008
11207 :cond_d
11208 const/16 v0, 0x49
11209
11210 if-ge p2, v0, :cond_e
11211
11212 .line 1012
11213 const-string v0, "UPDATE audio_meta SET is_music=1 WHERE is_music=0 AND _data LIKE \'%/music/%\';"
11214
11215 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11216
11217 .line 1014
11218 const-string v0, "UPDATE audio_meta SET is_ringtone=1 WHERE is_ringtone=0 AND _data LIKE \'%/ringtones/%\';"
11219
11220 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11221
11222 .line 1016
11223 const-string v0, "UPDATE audio_meta SET is_notification=1 WHERE is_notification=0 AND _data LIKE \'%/notifications/%\';"
11224
11225 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11226
11227 .line 1018
11228 const-string v0, "UPDATE audio_meta SET is_alarm=1 WHERE is_alarm=0 AND _data LIKE \'%/alarms/%\';"
11229
11230 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11231
11232 .line 1020
11233 const-string v0, "UPDATE audio_meta SET is_podcast=1 WHERE is_podcast=0 AND _data LIKE \'%/podcasts/%\';"
11234
11235 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11236
11237 .line 1024
11238 :cond_e
11239 const/16 v0, 0x4a
11240
11241 if-ge p2, v0, :cond_f
11242
11243 .line 1029
11244 const-string v0, "CREATE VIEW IF NOT EXISTS searchhelpertitle AS SELECT * FROM audio ORDER BY title_key;"
11245
11246 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11247
11248 .line 1032
11249 const-string v0, "CREATE VIEW IF NOT EXISTS search AS SELECT _id,\'artist\' AS mime_type,artist,NULL AS album,NULL AS title,artist AS text1,NULL AS text2,number_of_albums AS data1,number_of_tracks AS data2,artist_key AS match,\'content://media/external/audio/artists/\'||_id AS suggest_intent_data,1 AS grouporder FROM artist_info WHERE (artist!=\'<unknown>\') UNION ALL SELECT _id,\'album\' AS mime_type,artist,album,NULL AS title,album AS text1,artist AS text2,NULL AS data1,NULL AS data2,artist_key||\' \'||album_key AS match,\'content://media/external/audio/albums/\'||_id AS suggest_intent_data,2 AS grouporder FROM album_info WHERE (album!=\'<unknown>\') UNION ALL SELECT searchhelpertitle._id AS _id,mime_type,artist,album,title,title AS text1,artist AS text2,NULL AS data1,NULL AS data2,artist_key||\' \'||album_key||\' \'||title_key AS match,\'content://media/external/audio/media/\'||searchhelpertitle._id AS suggest_intent_data,3 AS grouporder FROM searchhelpertitle WHERE (title != \'\') "
11250
11251 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11252
11253 .line 1078
11254 :cond_f
11255 const/16 v0, 0x4b
11256
11257 if-ge p2, v0, :cond_10
11258
11259 .line 1081
11260 const-string v0, "UPDATE audio_meta SET date_modified=0;"
11261
11262 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11263
11264 .line 1082
11265 const-string v0, "DELETE FROM albums"
11266
11267 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11268
11269 .line 1085
11270 :cond_10
11271 const/16 v0, 0x4c
11272
11273 if-ge p2, v0, :cond_11
11274
11275 .line 1088
11276 const-string v0, "UPDATE audio_meta SET title_key=REPLACE(title_key,x\'081D08C29F081D\',x\'081D\') WHERE title_key LIKE \'%\'||x\'081D08C29F081D\'||\'%\';"
11277
11278 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11279
11280 .line 1091
11281 const-string v0, "UPDATE albums SET album_key=REPLACE(album_key,x\'081D08C29F081D\',x\'081D\') WHERE album_key LIKE \'%\'||x\'081D08C29F081D\'||\'%\';"
11282
11283 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11284
11285 .line 1094
11286 const-string v0, "UPDATE artists SET artist_key=REPLACE(artist_key,x\'081D08C29F081D\',x\'081D\') WHERE artist_key LIKE \'%\'||x\'081D08C29F081D\'||\'%\';"
11287
11288 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11289
11290 .line 1103
11291 :cond_11
11292 const/16 v0, 0x4d
11293
11294 if-ge p2, v0, :cond_12
11295
11296 .line 1105
11297 const-string v0, "CREATE TABLE IF NOT EXISTS videothumbnails (_id INTEGER PRIMARY KEY,_data TEXT,video_id INTEGER,kind INTEGER,width INTEGER,height INTEGER);"
11298
11299 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11300
11301 .line 1114
11302 const-string v0, "CREATE INDEX IF NOT EXISTS video_id_index on videothumbnails(video_id);"
11303
11304 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11305
11306 .line 1116
11307 const-string v0, "CREATE TRIGGER IF NOT EXISTS videothumbnails_cleanup DELETE ON videothumbnails BEGIN SELECT _DELETE_FILE(old._data);END"
11308
11309 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11310
11311 .line 1126
11312 :cond_12
11313 const/16 v0, 0x4e
11314
11315 if-ge p2, v0, :cond_13
11316
11317 .line 1129
11318 const-string v0, "UPDATE video SET date_modified=0;"
11319
11320 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11321
11322 .line 1136
11323 :cond_13
11324 const/16 v0, 0x4f
11325
11326 if-ge p2, v0, :cond_14
11327
11328 .line 1141
11329 new-instance v0, Ljava/lang/StringBuilder;
11330
11331 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
11332
11333 sget-object v1, Lcom/android/providers/media/MediaProvider;->mExternalStoragePaths:[Ljava/lang/String;
11334
11335 aget-object v1, v1, v5
11336
11337 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
11338
11339 move-result-object v0
11340
11341 const-string v1, "/albumthumbs"
11342
11343 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
11344
11345 move-result-object v0
11346
11347 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
11348
11349 move-result-object v0
11350
11351 .line 1142
11352 new-instance v1, Ljava/lang/StringBuilder;
11353
11354 invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
11355
11356 sget-object v2, Lcom/android/providers/media/MediaProvider;->mExternalStoragePaths:[Ljava/lang/String;
11357
11358 aget-object v2, v2, v5
11359
11360 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
11361
11362 move-result-object v1
11363
11364 const-string v2, "/"
11365
11366 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
11367
11368 move-result-object v1
11369
11370 const-string v2, "Android/data/com.android.providers.media/albumthumbs"
11371
11372 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
11373
11374 move-result-object v1
11375
11376 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
11377
11378 move-result-object v1
11379
11380 .line 1143
11381 new-instance v2, Ljava/io/File;
11382
11383 invoke-direct {v2, v0}, Ljava/io/File;-><init>(Ljava/lang/String;)V
11384
11385 .line 1144
11386 invoke-virtual {v2}, Ljava/io/File;->exists()Z
11387
11388 move-result v3
11389
11390 if-eqz v3, :cond_14
11391
11392 .line 1146
11393 new-instance v3, Ljava/io/File;
11394
11395 invoke-direct {v3, v1}, Ljava/io/File;-><init>(Ljava/lang/String;)V
11396
11397 .line 1147
11398 invoke-virtual {v3}, Ljava/io/File;->getParentFile()Ljava/io/File;
11399
11400 move-result-object v4
11401
11402 invoke-virtual {v4}, Ljava/io/File;->mkdirs()Z
11403
11404 .line 1148
11405 invoke-virtual {v2, v3}, Ljava/io/File;->renameTo(Ljava/io/File;)Z
11406
11407 move-result v2
11408
11409 if-eqz v2, :cond_14
11410
11411 .line 1150
11412 new-instance v2, Ljava/lang/StringBuilder;
11413
11414 invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
11415
11416 const-string v3, "UPDATE album_art SET _data=REPLACE(_data, \'"
11417
11418 invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
11419
11420 move-result-object v2
11421
11422 invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
11423
11424 move-result-object v0
11425
11426 const-string v2, "\',\'"
11427
11428 invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
11429
11430 move-result-object v0
11431
11432 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
11433
11434 move-result-object v0
11435
11436 const-string v1, "\');"
11437
11438 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
11439
11440 move-result-object v0
11441
11442 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
11443
11444 move-result-object v0
11445
11446 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11447
11448 .line 1156
11449 :cond_14
11450 const/16 v0, 0x50
11451
11452 if-ge p2, v0, :cond_15
11453
11454 .line 1158
11455 const-string v0, "UPDATE images SET date_modified=0;"
11456
11457 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11458
11459 .line 1161
11460 :cond_15
11461 const/16 v0, 0x51
11462
11463 if-ge p2, v0, :cond_16
11464
11465 if-nez p1, :cond_16
11466
11467 .line 1169
11468 const-string v0, "UPDATE audio_playlists SET _data=\'////\' WHERE _data LIKE \'/mnt/sdcard_ext/%\';"
11469
11470 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11471
11472 .line 1170
11473 const-string v0, "UPDATE images SET _data=\'////\' WHERE _data LIKE \'/mnt/sdcard_ext/%\';"
11474
11475 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11476
11477 .line 1171
11478 const-string v0, "UPDATE video SET _data=\'////\' WHERE _data LIKE \'/mnt/sdcard_ext/%\';"
11479
11480 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11481
11482 .line 1172
11483 const-string v0, "UPDATE videothumbnails SET _data=\'////\' WHERE _data LIKE \'/mnt/sdcard_ext/%\';"
11484
11485 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11486
11487 .line 1173
11488 const-string v0, "UPDATE thumbnails SET _data=\'////\' WHERE _data LIKE \'/mnt/sdcard_ext/%\';"
11489
11490 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11491
11492 .line 1174
11493 const-string v0, "UPDATE album_art SET _data=\'////\' WHERE _data LIKE \'/mnt/sdcard_ext/%\';"
11494
11495 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11496
11497 .line 1175
11498 const-string v0, "UPDATE audio_meta SET _data=\'////\' WHERE _data LIKE \'/mnt/sdcard_ext/%\';"
11499
11500 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11501
11502 .line 1177
11503 const-string v0, "DELETE FROM audio_playlists WHERE _data IS \'////\';"
11504
11505 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11506
11507 .line 1178
11508 const-string v0, "DELETE FROM images WHERE _data IS \'////\';"
11509
11510 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11511
11512 .line 1179
11513 const-string v0, "DELETE FROM video WHERE _data IS \'////\';"
11514
11515 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11516
11517 .line 1180
11518 const-string v0, "DELETE FROM videothumbnails WHERE _data IS \'////\';"
11519
11520 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11521
11522 .line 1181
11523 const-string v0, "DELETE FROM thumbnails WHERE _data IS \'////\';"
11524
11525 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11526
11527 .line 1182
11528 const-string v0, "DELETE FROM audio_meta WHERE _data IS \'////\';"
11529
11530 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11531
11532 .line 1183
11533 const-string v0, "DELETE FROM album_art WHERE _data IS \'////\';"
11534
11535 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11536
11537 .line 1186
11538 const-string v0, "UPDATE audio_meta SET _data=\'/mnt/sdcard\'||SUBSTR(_data,8) WHERE _data LIKE \'/sdcard/%\';"
11539
11540 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11541
11542 .line 1188
11543 const-string v0, "UPDATE audio_playlists SET _data=\'/mnt/sdcard\'||SUBSTR(_data,8) WHERE _data LIKE \'/sdcard/%\';"
11544
11545 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11546
11547 .line 1190
11548 const-string v0, "UPDATE images SET _data=\'/mnt/sdcard\'||SUBSTR(_data,8) WHERE _data LIKE \'/sdcard/%\';"
11549
11550 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11551
11552 .line 1192
11553 const-string v0, "UPDATE video SET _data=\'/mnt/sdcard\'||SUBSTR(_data,8) WHERE _data LIKE \'/sdcard/%\';"
11554
11555 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11556
11557 .line 1194
11558 const-string v0, "UPDATE videothumbnails SET _data=\'/mnt/sdcard\'||SUBSTR(_data,8) WHERE _data LIKE \'/sdcard/%\';"
11559
11560 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11561
11562 .line 1196
11563 const-string v0, "UPDATE thumbnails SET _data=\'/mnt/sdcard\'||SUBSTR(_data,8) WHERE _data LIKE \'/sdcard/%\';"
11564
11565 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11566
11567 .line 1198
11568 const-string v0, "UPDATE album_art SET _data=\'/mnt/sdcard\'||SUBSTR(_data,8) WHERE _data LIKE \'/sdcard/%\';"
11569
11570 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11571
11572 .line 1206
11573 const-string v0, "DELETE from albums"
11574
11575 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11576
11577 .line 1207
11578 const-string v0, "DELETE from artists"
11579
11580 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11581
11582 .line 1208
11583 const-string v0, "UPDATE audio_meta SET date_modified=0;"
11584
11585 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11586
11587 .line 1211
11588 :cond_16
11589 const/16 v0, 0x52
11590
11591 if-ge p2, v0, :cond_17
11592
11593 .line 1213
11594 const-string v0, "DROP VIEW IF EXISTS artist_info"
11595
11596 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11597
11598 .line 1214
11599 const-string v0, "CREATE VIEW IF NOT EXISTS artist_info AS SELECT artist_id AS _id, artist, artist_key, COUNT(DISTINCT album_key) AS number_of_albums, COUNT(*) AS number_of_tracks FROM audio WHERE is_music=1 GROUP BY artist_key;"
11600
11601 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11602
11603 .line 1223
11604 :cond_17
11605 const/16 v0, 0x57
11606
11607 if-ge p2, v0, :cond_18
11608
11609 .line 1227
11610 const-string v0, "CREATE INDEX IF NOT EXISTS title_idx on audio_meta(title);"
11611
11612 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11613
11614 .line 1228
11615 const-string v0, "CREATE INDEX IF NOT EXISTS artist_idx on artists(artist);"
11616
11617 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11618
11619 .line 1229
11620 const-string v0, "CREATE INDEX IF NOT EXISTS album_idx on albums(album);"
11621
11622 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11623
11624 .line 1232
11625 :cond_18
11626 const/16 v0, 0x58
11627
11628 if-ge p2, v0, :cond_19
11629
11630 .line 1235
11631 const-string v0, "DROP TRIGGER IF EXISTS albums_update1;"
11632
11633 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11634
11635 .line 1236
11636 const-string v0, "DROP TRIGGER IF EXISTS albums_update2;"
11637
11638 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11639
11640 .line 1237
11641 const-string v0, "DROP TRIGGER IF EXISTS albums_update3;"
11642
11643 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11644
11645 .line 1238
11646 const-string v0, "DROP TRIGGER IF EXISTS albums_update4;"
11647
11648 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11649
11650 .line 1239
11651 const-string v0, "DROP TRIGGER IF EXISTS artist_update1;"
11652
11653 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11654
11655 .line 1240
11656 const-string v0, "DROP TRIGGER IF EXISTS artist_update2;"
11657
11658 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11659
11660 .line 1241
11661 const-string v0, "DROP TRIGGER IF EXISTS artist_update3;"
11662
11663 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11664
11665 .line 1242
11666 const-string v0, "DROP TRIGGER IF EXISTS artist_update4;"
11667
11668 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11669
11670 .line 1243
11671 const-string v0, "DROP VIEW IF EXISTS album_artists;"
11672
11673 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11674
11675 .line 1244
11676 const-string v0, "CREATE INDEX IF NOT EXISTS album_id_idx on audio_meta(album_id);"
11677
11678 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11679
11680 .line 1245
11681 const-string v0, "CREATE INDEX IF NOT EXISTS artist_id_idx on audio_meta(artist_id);"
11682
11683 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11684
11685 .line 1248
11686 const-string v0, "CREATE VIEW IF NOT EXISTS artists_albums_map AS SELECT DISTINCT artist_id, album_id FROM audio_meta;"
11687
11688 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11689
11690 .line 1256
11691 :cond_19
11692 const/16 v0, 0x5b
11693
11694 if-ge p2, v0, :cond_1a
11695
11696 .line 1258
11697 const-string v0, "DROP INDEX IF EXISTS mini_thumb_magic_index"
11698
11699 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11700
11701 .line 1261
11702 const-string v0, "CREATE INDEX IF NOT EXISTS image_bucket_index ON images(bucket_id, datetaken)"
11703
11704 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11705
11706 .line 1262
11707 const-string v0, "CREATE INDEX IF NOT EXISTS video_bucket_index ON video(bucket_id, datetaken)"
11708
11709 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11710
11711 .line 1269
11712 :cond_1a
11713 const/16 v0, 0x64
11714
11715 if-gt p2, v0, :cond_1e
11716
11717 .line 1271
11718 const-string v0, "DROP TABLE IF EXISTS objects"
11719
11720 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11721
11722 .line 1272
11723 const-string v0, "DROP TABLE IF EXISTS files"
11724
11725 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11726
11727 .line 1273
11728 const-string v0, "DROP TRIGGER IF EXISTS images_objects_cleanup;"
11729
11730 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11731
11732 .line 1274
11733 const-string v0, "DROP TRIGGER IF EXISTS audio_objects_cleanup;"
11734
11735 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11736
11737 .line 1275
11738 const-string v0, "DROP TRIGGER IF EXISTS video_objects_cleanup;"
11739
11740 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11741
11742 .line 1276
11743 const-string v0, "DROP TRIGGER IF EXISTS playlists_objects_cleanup;"
11744
11745 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11746
11747 .line 1277
11748 const-string v0, "DROP TRIGGER IF EXISTS files_cleanup_images;"
11749
11750 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11751
11752 .line 1278
11753 const-string v0, "DROP TRIGGER IF EXISTS files_cleanup_audio;"
11754
11755 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11756
11757 .line 1279
11758 const-string v0, "DROP TRIGGER IF EXISTS files_cleanup_video;"
11759
11760 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11761
11762 .line 1280
11763 const-string v0, "DROP TRIGGER IF EXISTS files_cleanup_playlists;"
11764
11765 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11766
11767 .line 1281
11768 const-string v0, "DROP TRIGGER IF EXISTS media_cleanup;"
11769
11770 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11771
11772 .line 1286
11773 const-string v0, "CREATE TABLE files (_id INTEGER PRIMARY KEY AUTOINCREMENT,_data TEXT,_size INTEGER,format INTEGER,parent INTEGER,date_added INTEGER,date_modified INTEGER,mime_type TEXT,title TEXT,description TEXT,_display_name TEXT,picasa_id TEXT,orientation INTEGER,latitude DOUBLE,longitude DOUBLE,datetaken INTEGER,mini_thumb_magic INTEGER,bucket_id TEXT,bucket_display_name TEXT,isprivate INTEGER,title_key TEXT,artist_id INTEGER,album_id INTEGER,composer TEXT,track INTEGER,year INTEGER CHECK(year!=0),is_ringtone INTEGER,is_music INTEGER,is_alarm INTEGER,is_notification INTEGER,is_podcast INTEGER,album_artist TEXT,duration INTEGER,bookmark INTEGER,artist TEXT,album TEXT,resolution TEXT,tags TEXT,category TEXT,language TEXT,mini_thumb_data TEXT,name TEXT,media_type INTEGER,old_id INTEGER);"
11774
11775 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11776
11777 .line 1351
11778 const-string v0, "CREATE INDEX path_index ON files(_data);"
11779
11780 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11781
11782 .line 1352
11783 const-string v0, "CREATE INDEX media_type_index ON files(media_type);"
11784
11785 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11786
11787 .line 1361
11788 const-string v0, "INSERT INTO files (_id,_data,_display_name,_size,mime_type,date_added,date_modified,title,title_key,duration,artist_id,composer,album_id,track,year,is_ringtone,is_music,is_alarm,is_notification,is_podcast,bookmark,old_id,media_type) SELECT _id,_data,_display_name,_size,mime_type,date_added,date_modified,title,title_key,duration,artist_id,composer,album_id,track,year,is_ringtone,is_music,is_alarm,is_notification,is_podcast,bookmark,_id,2 FROM audio_meta;"
11789
11790 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11791
11792 .line 1365
11793 const-string v0, "INSERT INTO files (_data,_size,_display_name,mime_type,title,date_added,date_modified,description,picasa_id,isprivate,latitude,longitude,datetaken,orientation,mini_thumb_magic,bucket_id,bucket_display_name,old_id,media_type) SELECT _data,_size,_display_name,mime_type,title,date_added,date_modified,description,picasa_id,isprivate,latitude,longitude,datetaken,orientation,mini_thumb_magic,bucket_id,bucket_display_name,_id,1 FROM images;"
11794
11795 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11796
11797 .line 1367
11798 const-string v0, "INSERT INTO files (_data,_display_name,_size,mime_type,date_added,date_modified,title,duration,artist,album,resolution,description,isprivate,tags,category,language,mini_thumb_data,latitude,longitude,datetaken,mini_thumb_magic,bucket_id,bucket_display_name, bookmark,old_id,media_type) SELECT _data,_display_name,_size,mime_type,date_added,date_modified,title,duration,artist,album,resolution,description,isprivate,tags,category,language,mini_thumb_data,latitude,longitude,datetaken,mini_thumb_magic,bucket_id,bucket_display_name, bookmark,_id,3 FROM video;"
11799
11800 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11801
11802 .line 1369
11803 if-nez p1, :cond_1b
11804
11805 .line 1370
11806 const-string v0, "INSERT INTO files (_data,name,date_added,date_modified,old_id,media_type) SELECT _data,name,date_added,date_modified,_id,4 FROM audio_playlists;"
11807
11808 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11809
11810 .line 1376
11811 :cond_1b
11812 const-string v0, "DROP TABLE IF EXISTS images"
11813
11814 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11815
11816 .line 1377
11817 const-string v0, "DROP TABLE IF EXISTS audio_meta"
11818
11819 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11820
11821 .line 1378
11822 const-string v0, "DROP TABLE IF EXISTS video"
11823
11824 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11825
11826 .line 1379
11827 const-string v0, "DROP TABLE IF EXISTS audio_playlists"
11828
11829 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11830
11831 .line 1382
11832 const-string v0, "CREATE VIEW images AS SELECT _id,_data,_size,_display_name,mime_type,title,date_added,date_modified,description,picasa_id,isprivate,latitude,longitude,datetaken,orientation,mini_thumb_magic,bucket_id,bucket_display_name FROM files WHERE media_type=1;"
11833
11834 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11835
11836 .line 1385
11837 const-string v0, "CREATE VIEW audio_meta AS SELECT _id,_data,_display_name,_size,mime_type,date_added,date_modified,title,title_key,duration,artist_id,composer,album_id,track,year,is_ringtone,is_music,is_alarm,is_notification,is_podcast,bookmark,album_artist FROM files WHERE media_type=2;"
11838
11839 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11840
11841 .line 1388
11842 const-string v0, "CREATE VIEW video AS SELECT _id,_data,_display_name,_size,mime_type,date_added,date_modified,title,duration,artist,album,resolution,description,isprivate,tags,category,language,mini_thumb_data,latitude,longitude,datetaken,mini_thumb_magic,bucket_id,bucket_display_name, bookmark FROM files WHERE media_type=3;"
11843
11844 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11845
11846 .line 1391
11847 if-nez p1, :cond_1c
11848
11849 .line 1392
11850 const-string v0, "CREATE VIEW audio_playlists AS SELECT _id,_data,name,date_added,date_modified FROM files WHERE media_type=4;"
11851
11852 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11853
11854 .line 1398
11855 :cond_1c
11856 const-string v0, "CREATE INDEX tmp ON files(old_id);"
11857
11858 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11859
11860 .line 1401
11861 const-string v0, "UPDATE thumbnails SET image_id = (SELECT _id FROM files WHERE files.old_id = thumbnails.image_id AND files.media_type = 1);"
11862
11863 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11864
11865 .line 1405
11866 if-nez p1, :cond_1d
11867
11868 .line 1408
11869 const-string v0, "UPDATE audio_genres_map SET audio_id = (SELECT _id FROM files WHERE files.old_id = audio_genres_map.audio_id AND files.media_type = 2);"
11870
11871 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11872
11873 .line 1411
11874 const-string v0, "UPDATE audio_playlists_map SET audio_id = (SELECT _id FROM files WHERE files.old_id = audio_playlists_map.audio_id AND files.media_type = 2);"
11875
11876 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11877
11878 .line 1414
11879 const-string v0, "UPDATE audio_playlists_map SET playlist_id = (SELECT _id FROM files WHERE files.old_id = audio_playlists_map.playlist_id AND files.media_type = 4);"
11880
11881 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11882
11883 .line 1420
11884 :cond_1d
11885 const-string v0, "UPDATE videothumbnails SET video_id = (SELECT _id FROM files WHERE files.old_id = videothumbnails.video_id AND files.media_type = 3);"
11886
11887 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11888
11889 .line 1425
11890 const-string v0, "DROP INDEX tmp;"
11891
11892 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11893
11894 .line 1428
11895 const-string v0, "DROP INDEX IF EXISTS title_idx"
11896
11897 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11898
11899 .line 1429
11900 const-string v0, "DROP INDEX IF EXISTS album_id_idx"
11901
11902 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11903
11904 .line 1430
11905 const-string v0, "DROP INDEX IF EXISTS image_bucket_index"
11906
11907 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11908
11909 .line 1431
11910 const-string v0, "DROP INDEX IF EXISTS video_bucket_index"
11911
11912 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11913
11914 .line 1432
11915 const-string v0, "DROP INDEX IF EXISTS sort_index"
11916
11917 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11918
11919 .line 1433
11920 const-string v0, "DROP INDEX IF EXISTS titlekey_index"
11921
11922 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11923
11924 .line 1434
11925 const-string v0, "DROP INDEX IF EXISTS artist_id_idx"
11926
11927 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11928
11929 .line 1435
11930 const-string v0, "CREATE INDEX title_idx ON files(title);"
11931
11932 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11933
11934 .line 1436
11935 const-string v0, "CREATE INDEX album_id_idx ON files(album_id);"
11936
11937 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11938
11939 .line 1437
11940 const-string v0, "CREATE INDEX bucket_index ON files(bucket_id, datetaken);"
11941
11942 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11943
11944 .line 1438
11945 const-string v0, "CREATE INDEX sort_index ON files(datetaken ASC, _id ASC);"
11946
11947 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11948
11949 .line 1439
11950 const-string v0, "CREATE INDEX titlekey_index ON files(title_key);"
11951
11952 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11953
11954 .line 1440
11955 const-string v0, "CREATE INDEX artist_id_idx ON files(artist_id);"
11956
11957 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11958
11959 .line 1443
11960 const-string v0, "DROP TRIGGER IF EXISTS images_cleanup"
11961
11962 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11963
11964 .line 1444
11965 const-string v0, "DROP TRIGGER IF EXISTS audio_meta_cleanup"
11966
11967 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11968
11969 .line 1445
11970 const-string v0, "DROP TRIGGER IF EXISTS video_cleanup"
11971
11972 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11973
11974 .line 1446
11975 const-string v0, "DROP TRIGGER IF EXISTS audio_playlists_cleanup"
11976
11977 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11978
11979 .line 1447
11980 const-string v0, "DROP TRIGGER IF EXISTS audio_delete"
11981
11982 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11983
11984 .line 1449
11985 const-string v0, "CREATE TRIGGER IF NOT EXISTS images_cleanup DELETE ON files WHEN old.media_type = 1 BEGIN DELETE FROM thumbnails WHERE image_id = old._id;SELECT _DELETE_FILE(old._data);END"
11986
11987 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11988
11989 .line 1456
11990 const-string v0, "CREATE TRIGGER IF NOT EXISTS video_cleanup DELETE ON files WHEN old.media_type = 3 BEGIN SELECT _DELETE_FILE(old._data);END"
11991
11992 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
11993
11994 .line 1462
11995 if-nez p1, :cond_1e
11996
11997 .line 1463
11998 const-string v0, "CREATE TRIGGER IF NOT EXISTS audio_meta_cleanup DELETE ON files WHEN old.media_type = 2 BEGIN DELETE FROM audio_genres_map WHERE audio_id = old._id;DELETE FROM audio_playlists_map WHERE audio_id = old._id;END"
11999
12000 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12001
12002 .line 1470
12003 const-string v0, "CREATE TRIGGER IF NOT EXISTS audio_playlists_cleanup DELETE ON files WHEN old.media_type = 4 BEGIN DELETE FROM audio_playlists_map WHERE playlist_id = old._id;SELECT _DELETE_FILE(old._data);END"
12004
12005 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12006
12007 .line 1477
12008 const-string v0, "CREATE TRIGGER IF NOT EXISTS audio_delete INSTEAD OF DELETE ON audio BEGIN DELETE from files where _id=old._id;DELETE from audio_playlists_map where audio_id=old._id;DELETE from audio_genres_map where audio_id=old._id;END"
12009
12010 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12011
12012 .line 1487
12013 :cond_1e
12014 const/16 v0, 0x12c
12015
12016 if-ge p2, v0, :cond_1f
12017
12018 .line 1490
12019 const-string v0, "files"
12020
12021 invoke-static {p0, v0}, Lcom/android/providers/media/MediaProvider;->updateBucketNames(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)V
12022
12023 .line 1493
12024 :cond_1f
12025 const/16 v0, 0x12d
12026
12027 if-ge p2, v0, :cond_20
12028
12029 .line 1494
12030 const-string v0, "DROP INDEX IF EXISTS bucket_index"
12031
12032 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12033
12034 .line 1495
12035 const-string v0, "CREATE INDEX bucket_index on files(bucket_id, media_type, datetaken, _id)"
12036
12037 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12038
12039 .line 1496
12040 const-string v0, "CREATE INDEX bucket_name on files(bucket_id, media_type, bucket_display_name)"
12041
12042 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12043
12044 .line 1499
12045 :cond_20
12046 const/16 v0, 0x12e
12047
12048 if-ge p2, v0, :cond_21
12049
12050 .line 1500
12051 const-string v0, "CREATE INDEX parent_index ON files(parent);"
12052
12053 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12054
12055 .line 1501
12056 const-string v0, "CREATE INDEX format_index ON files(format);"
12057
12058 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12059
12060 .line 1504
12061 :cond_21
12062 const/16 v0, 0x12f
12063
12064 if-ge p2, v0, :cond_22
12065
12066 .line 1507
12067 const-string v0, "DELETE from albums"
12068
12069 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12070
12071 .line 1508
12072 const-string v0, "UPDATE files SET date_modified=0 WHERE media_type=2;"
12073
12074 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12075
12076 .line 1512
12077 :cond_22
12078 const/16 v0, 0x130
12079
12080 if-ge p2, v0, :cond_23
12081
12082 if-nez p1, :cond_23
12083
12084 .line 1514
12085 const-string v0, "CREATE TRIGGER IF NOT EXISTS files_cleanup DELETE ON files BEGIN SELECT _OBJECT_REMOVED(old._id);END"
12086
12087 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12088
12089 .line 1521
12090 :cond_23
12091 const/16 v0, 0x131
12092
12093 if-ge p2, v0, :cond_24
12094
12095 if-eqz p1, :cond_24
12096
12097 .line 1523
12098 const-string v0, "DROP TRIGGER IF EXISTS files_cleanup"
12099
12100 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12101
12102 .line 1526
12103 :cond_24
12104 const/16 v0, 0x132
12105
12106 if-ge p2, v0, :cond_25
12107
12108 if-nez p1, :cond_25
12109
12110 .line 1529
12111 const-string v0, "UPDATE files SET date_modified=0 WHERE media_type=2;"
12112
12113 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12114
12115 .line 1531
12116 const-string v0, "DELETE FROM audio_genres_map"
12117
12118 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12119
12120 .line 1532
12121 const-string v0, "DELETE FROM audio_genres"
12122
12123 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12124
12125 .line 1535
12126 :cond_25
12127 const/16 v0, 0x133
12128
12129 if-ge p2, v0, :cond_26
12130
12131 if-nez p1, :cond_26
12132
12133 .line 1538
12134 const-string v0, "UPDATE files SET date_modified=0 WHERE media_type=1;"
12135
12136 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12137
12138 .line 1544
12139 :cond_26
12140 if-lt p2, v7, :cond_27
12141
12142 if-ne p2, v7, :cond_28
12143
12144 if-eqz p1, :cond_28
12145
12146 .line 1546
12147 :cond_27
12148 const-string v0, "ALTER TABLE files ADD COLUMN storage_id INTEGER;"
12149
12150 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12151
12152 .line 1548
12153 new-instance v0, Ljava/lang/StringBuilder;
12154
12155 invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
12156
12157 const-string v1, "UPDATE files SET storage_id="
12158
12159 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12160
12161 move-result-object v0
12162
12163 invoke-static {v5}, Landroid/mtp/MtpStorage;->getStorageId(I)I
12164
12165 move-result v1
12166
12167 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
12168
12169 move-result-object v0
12170
12171 const-string v1, ";"
12172
12173 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12174
12175 move-result-object v0
12176
12177 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
12178
12179 move-result-object v0
12180
12181 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12182
12183 .line 1551
12184 :cond_28
12185 const/16 v0, 0x193
12186
12187 if-ge p2, v0, :cond_29
12188
12189 if-nez p1, :cond_29
12190
12191 .line 1552
12192 const-string v0, "CREATE VIEW audio_genres_map_noid AS SELECT audio_id,genre_id from audio_genres_map;"
12193
12194 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12195
12196 .line 1556
12197 :cond_29
12198 const/16 v0, 0x194
12199
12200 if-ge p2, v0, :cond_2a
12201
12202 .line 1559
12203 const-string v0, "DELETE from albums"
12204
12205 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12206
12207 .line 1560
12208 const-string v0, "UPDATE files SET date_modified=0 WHERE media_type=2;"
12209
12210 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12211
12212 .line 1564
12213 :cond_2a
12214 const/16 v0, 0x195
12215
12216 if-ge p2, v0, :cond_2b
12217
12218 .line 1566
12219 const-string v0, "ALTER TABLE files ADD COLUMN is_drm INTEGER;"
12220
12221 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12222
12223 .line 1568
12224 const-string v0, "DROP VIEW IF EXISTS audio_meta"
12225
12226 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12227
12228 .line 1569
12229 const-string v0, "CREATE VIEW audio_meta AS SELECT _id,_data,_display_name,_size,mime_type,date_added,is_drm,date_modified,title,title_key,duration,artist_id,composer,album_id,track,year,is_ringtone,is_music,is_alarm,is_notification,is_podcast,bookmark,album_artist FROM files WHERE media_type=2;"
12230
12231 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12232
12233 .line 1573
12234 invoke-static {p0}, Lcom/android/providers/media/MediaProvider;->recreateAudioView(Landroid/database/sqlite/SQLiteDatabase;)V
12235
12236 .line 1576
12237 :cond_2b
12238 const/16 v0, 0x197
12239
12240 if-ge p2, v0, :cond_2c
12241
12242 .line 1580
12243 const-string v0, "UPDATE files SET date_modified=0;"
12244
12245 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12246
12247 .line 1583
12248 :cond_2c
12249 if-ge p2, v6, :cond_2d
12250
12251 .line 1585
12252 const-string v0, "ALTER TABLE files ADD COLUMN width INTEGER;"
12253
12254 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12255
12256 .line 1586
12257 const-string v0, "ALTER TABLE files ADD COLUMN height INTEGER;"
12258
12259 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12260
12261 .line 1589
12262 const-string v0, "UPDATE files SET date_modified=0;"
12263
12264 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12265
12266 .line 1592
12267 const-string v0, "DROP VIEW IF EXISTS images"
12268
12269 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12270
12271 .line 1593
12272 const-string v0, "DROP VIEW IF EXISTS video"
12273
12274 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12275
12276 .line 1594
12277 const-string v0, "CREATE VIEW images AS SELECT _id,_data,_size,_display_name,mime_type,title,date_added,date_modified,description,picasa_id,isprivate,latitude,longitude,datetaken,orientation,mini_thumb_magic,bucket_id,bucket_display_name,width,height FROM files WHERE media_type=1;"
12278
12279 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12280
12281 .line 1597
12282 const-string v0, "CREATE VIEW video AS SELECT _id,_data,_display_name,_size,mime_type,date_added,date_modified,title,duration,artist,album,resolution,description,isprivate,tags,category,language,mini_thumb_data,latitude,longitude,datetaken,mini_thumb_magic,bucket_id,bucket_display_name,bookmark,width,height FROM files WHERE media_type=3;"
12283
12284 invoke-virtual {p0, v0}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12285
12286 .line 1604
12287 invoke-static {p0}, Lcom/android/providers/media/MediaProvider;->updateParent(Landroid/database/sqlite/SQLiteDatabase;)V
12288
12289 .line 1607
12290 :cond_2d
12291 invoke-static {p0, p2}, Lcom/android/providers/media/MediaProvider;->sanityCheck(Landroid/database/sqlite/SQLiteDatabase;I)V
12292
12293 .line 1608
12294 return-void
12295.end method
12296
12297.method private static updateDisplayName(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)V
12298 .locals 8
12299 .parameter
12300 .parameter
12301
12302 .prologue
12303 .line 1694
12304 invoke-virtual {p0}, Landroid/database/sqlite/SQLiteDatabase;->beginTransaction()V
12305
12306 .line 1696
12307 const/4 v0, 0x3
12308
12309 :try_start_0
12310 new-array v2, v0, [Ljava/lang/String;
12311
12312 const/4 v0, 0x0
12313
12314 const-string v1, "_id"
12315
12316 aput-object v1, v2, v0
12317
12318 const/4 v0, 0x1
12319
12320 const-string v1, "_data"
12321
12322 aput-object v1, v2, v0
12323
12324 const/4 v0, 0x2
12325
12326 const-string v1, "_display_name"
12327
12328 aput-object v1, v2, v0
12329
12330 .line 1681
12331 const-string v11, "UPDATE files SET _data=\'/mnt/sdcard_ext\'||SUBSTR(_data,12) WHERE _data LIKE \'/mnt/sdcard_ext/%\';"
12332
12333 move-object/from16 v0, p1
12334
12335 invoke-virtual {v0, v11}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12336
12337 .line 1683
12338 const-string v11, "UPDATE files SET _data=\'/storage/sdcard1\'||SUBSTR(_data,15) WHERE _data LIKE \'/mnt/external1/%\';"
12339
12340 move-object/from16 v0, p1
12341
12342 invoke-virtual {v0, v11}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12343
12344 .line 1685
12345 const-string v11, "UPDATE album_art SET _data=\'/mnt/sdcard_ext\'||SUBSTR(_data,12) WHERE _data LIKE \'/mnt/sdcard_ext/%\';"
12346
12347 move-object/from16 v0, p1
12348
12349 invoke-virtual {v0, v11}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12350
12351 .line 1687
12352 const-string v11, "UPDATE album_art SET _data=\'/storage/sdcard1\'||SUBSTR(_data,15) WHERE _data LIKE \'/mnt/external1/%\';"
12353
12354 move-object/from16 v0, p1
12355
12356 invoke-virtual {v0, v11}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12357
12358 .line 1689
12359 const-string v11, "UPDATE thumbnails SET _data=\'/mnt/sdcard_ext\'||SUBSTR(_data,12) WHERE _data LIKE \'/mnt/sdcard_ext/%\';"
12360
12361 move-object/from16 v0, p1
12362
12363 invoke-virtual {v0, v11}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12364
12365 .line 1691
12366 const-string v11, "UPDATE thumbnails SET _data=\'/storage/sdcard1\'||SUBSTR(_data,15) WHERE _data LIKE \'/mnt/external1/%\';"
12367
12368 move-object/from16 v0, p1
12369
12370 invoke-virtual {v0, v11}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12371
12372 .line 1693
12373 const-string v11, "UPDATE videothumbnails SET _data=\'/mnt/sdcard_ext\'||SUBSTR(_data,12) WHERE _data LIKE \'/mnt/sdcard_ext/%\';"
12374
12375 move-object/from16 v0, p1
12376
12377 invoke-virtual {v0, v11}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12378
12379 .line 1695
12380 const-string v11, "UPDATE videothumbnails SET _data=\'/storage/sdcard1\'||SUBSTR(_data,15) WHERE _data LIKE \'/mnt/external1/%\';"
12381
12382 move-object/from16 v0, p1
12383
12384 invoke-virtual {v0, v11}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
12385
12386 .line 1697
12387 const/4 v3, 0x0
12388
12389 const/4 v4, 0x0
12390
12391 const/4 v5, 0x0
12392
12393 const/4 v6, 0x0
12394
12395 const/4 v7, 0x0
12396
12397 move-object v0, p0
12398
12399 move-object v1, p1
12400
12401 invoke-virtual/range {v0 .. v7}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
12402 :try_end_0
12403 .catchall {:try_start_0 .. :try_end_0} :catchall_1
12404
12405 move-result-object v1
12406
12407 .line 1699
12408 :try_start_1
12409 const-string v0, "_id"
12410
12411 invoke-interface {v1, v0}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I
12412
12413 move-result v0
12414
12415 .line 1700
12416 const-string v2, "_data"
12417
12418 invoke-interface {v1, v2}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I
12419
12420 move-result v2
12421
12422 .line 1701
12423 const-string v3, "_display_name"
12424
12425 invoke-interface {v1, v3}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I
12426
12427 move-result v3
12428
12429 .line 1702
12430 new-instance v4, Landroid/content/ContentValues;
12431
12432 invoke-direct {v4}, Landroid/content/ContentValues;-><init>()V
12433
12434 .line 1703
12435 :cond_0
12436 :goto_0
12437 invoke-interface {v1}, Landroid/database/Cursor;->moveToNext()Z
12438
12439 move-result v5
12440
12441 if-eqz v5, :cond_1
12442
12443 .line 1704
12444 invoke-interface {v1, v3}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
12445
12446 move-result-object v5
12447
12448 .line 1705
12449 if-nez v5, :cond_0
12450
12451 .line 1706
12452 invoke-interface {v1, v2}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
12453
12454 move-result-object v5
12455
12456 .line 1707
12457 invoke-virtual {v4}, Landroid/content/ContentValues;->clear()V
12458
12459 .line 1708
12460 invoke-static {v5, v4}, Lcom/android/providers/media/MediaProvider;->computeDisplayName(Ljava/lang/String;Landroid/content/ContentValues;)V
12461
12462 .line 1709
12463 invoke-interface {v1, v0}, Landroid/database/Cursor;->getInt(I)I
12464
12465 move-result v5
12466
12467 .line 1710
12468 new-instance v6, Ljava/lang/StringBuilder;
12469
12470 invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
12471
12472 const-string v7, "_id="
12473
12474 invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12475
12476 move-result-object v6
12477
12478 invoke-virtual {v6, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
12479
12480 move-result-object v5
12481
12482 invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
12483
12484 move-result-object v5
12485
12486 const/4 v6, 0x0
12487
12488 invoke-virtual {p0, p1, v4, v5, v6}, Landroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
12489 :try_end_1
12490 .catchall {:try_start_1 .. :try_end_1} :catchall_0
12491
12492 goto :goto_0
12493
12494 .line 1714
12495 :catchall_0
12496 move-exception v0
12497
12498 :try_start_2
12499 invoke-interface {v1}, Landroid/database/Cursor;->close()V
12500
12501 throw v0
12502 :try_end_2
12503 .catchall {:try_start_2 .. :try_end_2} :catchall_1
12504
12505 .line 1718
12506 :catchall_1
12507 move-exception v0
12508
12509 invoke-virtual {p0}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V
12510
12511 throw v0
12512
12513 .line 1714
12514 :cond_1
12515 :try_start_3
12516 invoke-interface {v1}, Landroid/database/Cursor;->close()V
12517
12518 .line 1716
12519 invoke-virtual {p0}, Landroid/database/sqlite/SQLiteDatabase;->setTransactionSuccessful()V
12520 :try_end_3
12521 .catchall {:try_start_3 .. :try_end_3} :catchall_1
12522
12523 .line 1718
12524 invoke-virtual {p0}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V
12525
12526 .line 1720
12527 return-void
12528.end method
12529
12530.method private updateGenre(JLjava/lang/String;)V
12531 .locals 7
12532 .parameter
12533 .parameter
12534
12535 .prologue
12536 const/4 v6, 0x0
12537
12538 .line 3074
12539 .line 3076
12540 const-string v0, "external"
12541
12542 invoke-static {v0}, Landroid/provider/MediaStore$Audio$Genres;->getContentUri(Ljava/lang/String;)Landroid/net/Uri;
12543
12544 move-result-object v1
12545
12546 .line 3079
12547 :try_start_0
12548 sget-object v2, Lcom/android/providers/media/MediaProvider;->GENRE_LOOKUP_PROJECTION:[Ljava/lang/String;
12549
12550 const-string v3, "name=?"
12551
12552 const/4 v0, 0x1
12553
12554 new-array v4, v0, [Ljava/lang/String;
12555
12556 const/4 v0, 0x0
12557
12558 aput-object p3, v4, v0
12559
12560 const/4 v5, 0x0
12561
12562 move-object v0, p0
12563
12564 invoke-virtual/range {v0 .. v5}, Lcom/android/providers/media/MediaProvider;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
12565 :try_end_0
12566 .catchall {:try_start_0 .. :try_end_0} :catchall_0
12567
12568 move-result-object v2
12569
12570 .line 3081
12571 if-eqz v2, :cond_0
12572
12573 :try_start_1
12574 invoke-interface {v2}, Landroid/database/Cursor;->getCount()I
12575
12576 move-result v0
12577
12578 if-nez v0, :cond_4
12579
12580 .line 3083
12581 :cond_0
12582 new-instance v0, Landroid/content/ContentValues;
12583
12584 invoke-direct {v0}, Landroid/content/ContentValues;-><init>()V
12585
12586 .line 3084
12587 const-string v3, "name"
12588
12589 invoke-virtual {v0, v3, p3}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
12590
12591 .line 3085
12592 invoke-virtual {p0, v1, v0}, Lcom/android/providers/media/MediaProvider;->insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;
12593
12594 move-result-object v0
12595
12596 .line 3091
12597 :goto_0
12598 if-eqz v0, :cond_1
12599
12600 .line 3092
12601 const-string v1, "members"
12602
12603 invoke-static {v0, v1}, Landroid/net/Uri;->withAppendedPath(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;
12604 :try_end_1
12605 .catchall {:try_start_1 .. :try_end_1} :catchall_1
12606
12607 move-result-object v0
12608
12609 .line 3096
12610 :cond_1
12611 if-eqz v2, :cond_2
12612
12613 .line 3097
12614 invoke-interface {v2}, Landroid/database/Cursor;->close()V
12615
12616 .line 3101
12617 :cond_2
12618 if-eqz v0, :cond_3
12619
12620 .line 3103
12621 new-instance v1, Landroid/content/ContentValues;
12622
12623 invoke-direct {v1}, Landroid/content/ContentValues;-><init>()V
12624
12625 .line 3104
12626 const-string v2, "audio_id"
12627
12628 invoke-static {p1, p2}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
12629
12630 move-result-object v3
12631
12632 invoke-virtual {v1, v2, v3}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
12633
12634 .line 3105
12635 invoke-virtual {p0, v0, v1}, Lcom/android/providers/media/MediaProvider;->insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;
12636
12637 .line 3107
12638 :cond_3
12639 return-void
12640
12641 .line 3088
12642 :cond_4
12643 :try_start_2
12644 invoke-interface {v2}, Landroid/database/Cursor;->moveToNext()Z
12645
12646 .line 3089
12647 const/4 v0, 0x0
12648
12649 invoke-interface {v2, v0}, Landroid/database/Cursor;->getLong(I)J
12650
12651 move-result-wide v3
12652
12653 invoke-static {v1, v3, v4}, Landroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;
12654 :try_end_2
12655 .catchall {:try_start_2 .. :try_end_2} :catchall_1
12656
12657 move-result-object v0
12658
12659 goto :goto_0
12660
12661 .line 3096
12662 :catchall_0
12663 move-exception v0
12664
12665 move-object v1, v6
12666
12667 :goto_1
12668 if-eqz v1, :cond_5
12669
12670 .line 3097
12671 invoke-interface {v1}, Landroid/database/Cursor;->close()V
12672
12673 :cond_5
12674 throw v0
12675
12676 .line 3096
12677 :catchall_1
12678 move-exception v0
12679
12680 move-object v1, v2
12681
12682 goto :goto_1
12683.end method
12684
12685.method public static updateParent(Landroid/database/sqlite/SQLiteDatabase;)V
12686 .locals 9
12687 .parameter
12688
12689 .prologue
12690 const/4 v8, 0x0
12691
12692 .line 2579
12693 .line 2581
12694 const/4 v0, 0x2
12695
12696 :try_start_0
12697 new-array v2, v0, [Ljava/lang/String;
12698
12699 const/4 v0, 0x0
12700
12701 const-string v1, "_id"
12702
12703 aput-object v1, v2, v0
12704
12705 const/4 v0, 0x1
12706
12707 const-string v1, "_data"
12708
12709 aput-object v1, v2, v0
12710
12711 .line 2582
12712 const-string v3, "parent is null"
12713
12714 .line 2583
12715 const-string v1, "files"
12716
12717 const/4 v4, 0x0
12718
12719 const/4 v5, 0x0
12720
12721 const/4 v6, 0x0
12722
12723 const/4 v7, 0x0
12724
12725 move-object v0, p0
12726
12727 invoke-virtual/range {v0 .. v7}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
12728 :try_end_0
12729 .catchall {:try_start_0 .. :try_end_0} :catchall_1
12730
12731 move-result-object v1
12732
12733 .line 2584
12734 if-nez v1, :cond_1
12735
12736 .line 2600
12737 if-eqz v1, :cond_0
12738
12739 .line 2601
12740 invoke-interface {v1}, Landroid/database/Cursor;->close()V
12741
12742 .line 2605
12743 :cond_0
12744 :goto_0
12745 return-void
12746
12747 .line 2586
12748 :cond_1
12749 :try_start_1
12750 const-string v0, "_id"
12751
12752 invoke-interface {v1, v0}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I
12753
12754 move-result v0
12755
12756 .line 2587
12757 const-string v2, "_data"
12758
12759 invoke-interface {v1, v2}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I
12760
12761 move-result v2
12762
12763 .line 2588
12764 :goto_1
12765 invoke-interface {v1}, Landroid/database/Cursor;->moveToNext()Z
12766
12767 move-result v3
12768
12769 if-eqz v3, :cond_3
12770
12771 .line 2590
12772 const/4 v3, 0x1
12773
12774 new-array v3, v3, [Ljava/lang/String;
12775
12776 .line 2591
12777 const/4 v4, 0x0
12778
12779 invoke-interface {v1, v0}, Landroid/database/Cursor;->getInt(I)I
12780
12781 move-result v5
12782
12783 invoke-static {v5}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
12784
12785 move-result-object v5
12786
12787 aput-object v5, v3, v4
12788
12789 .line 2592
12790 invoke-interface {v1, v2}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
12791
12792 move-result-object v4
12793
12794 .line 2593
12795 invoke-static {p0, v4}, Lcom/android/providers/media/MediaProvider;->getParent_for_upgrade(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)J
12796
12797 move-result-wide v4
12798
12799 .line 2594
12800 new-instance v6, Landroid/content/ContentValues;
12801
12802 invoke-direct {v6}, Landroid/content/ContentValues;-><init>()V
12803
12804 .line 2595
12805 const-string v7, "parent"
12806
12807 invoke-static {v4, v5}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
12808
12809 move-result-object v4
12810
12811 invoke-virtual {v6, v7, v4}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
12812
12813 .line 2596
12814 const-string v4, "files"
12815
12816 const-string v5, "_id=?"
12817
12818 invoke-virtual {p0, v4, v6, v5, v3}, Landroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
12819 :try_end_1
12820 .catchall {:try_start_1 .. :try_end_1} :catchall_0
12821
12822 goto :goto_1
12823
12824 .line 2600
12825 :catchall_0
12826 move-exception v0
12827
12828 :goto_2
12829 if-eqz v1, :cond_2
12830
12831 .line 2601
12832 invoke-interface {v1}, Landroid/database/Cursor;->close()V
12833
12834 :cond_2
12835 throw v0
12836
12837 .line 2600
12838 :cond_3
12839 if-eqz v1, :cond_0
12840
12841 .line 2601
12842 invoke-interface {v1}, Landroid/database/Cursor;->close()V
12843
12844 goto :goto_0
12845
12846 .line 2600
12847 :catchall_1
12848 move-exception v0
12849
12850 move-object v1, v8
12851
12852 goto :goto_2
12853.end method
12854
12855.method private waitForThumbnailReady(Landroid/net/Uri;)Z
12856 .locals 10
12857 .parameter
12858
12859 .prologue
12860 const/4 v9, 0x2
12861
12862 const/4 v3, 0x0
12863
12864 const/4 v7, 0x1
12865
12866 const/4 v6, 0x0
12867
12868 .line 1784
12869 const/4 v0, 0x3
12870
12871 new-array v2, v0, [Ljava/lang/String;
12872
12873 const-string v0, "_id"
12874
12875 aput-object v0, v2, v6
12876
12877 const-string v0, "_data"
12878
12879 aput-object v0, v2, v7
12880
12881 const-string v0, "mini_thumb_magic"
12882
12883 aput-object v0, v2, v9
12884
12885 move-object v0, p0
12886
12887 move-object v1, p1
12888
12889 move-object v4, v3
12890
12891 move-object v5, v3
12892
12893 invoke-virtual/range {v0 .. v5}, Lcom/android/providers/media/MediaProvider;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
12894
12895 move-result-object v8
12896
12897 .line 1786
12898 if-nez v8, :cond_1
12899
12900 .line 1815
12901 :cond_0
12902 :goto_0
12903 return v6
12904
12905 .line 1790
12906 :cond_1
12907 invoke-interface {v8}, Landroid/database/Cursor;->moveToFirst()Z
12908
12909 move-result v0
12910
12911 if-eqz v0, :cond_4
12912
12913 .line 1791
12914 invoke-interface {v8, v6}, Landroid/database/Cursor;->getLong(I)J
12915
12916 .line 1792
12917 invoke-interface {v8, v7}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
12918
12919 move-result-object v1
12920
12921 .line 1793
12922 invoke-interface {v8, v9}, Landroid/database/Cursor;->getLong(I)J
12923
12924 move-result-wide v4
12925
12926 .line 1795
12927 const/4 v3, 0x5
12928
12929 move-object v0, p0
12930
12931 move-object v2, p1
12932
12933 invoke-direct/range {v0 .. v5}, Lcom/android/providers/media/MediaProvider;->requestMediaThumbnail(Ljava/lang/String;Landroid/net/Uri;IJ)Lcom/android/providers/media/MediaThumbRequest;
12934
12935 move-result-object v1
12936
12937 .line 1797
12938 if-eqz v1, :cond_0
12939
12940 .line 1800
12941 monitor-enter v1
12942
12943 .line 1802
12944 :goto_1
12945 :try_start_0
12946 iget-object v0, v1, Lcom/android/providers/media/MediaThumbRequest;->mState:Lcom/android/providers/media/MediaThumbRequest$State;
12947
12948 sget-object v2, Lcom/android/providers/media/MediaThumbRequest$State;->WAIT:Lcom/android/providers/media/MediaThumbRequest$State;
12949
12950 if-ne v0, v2, :cond_2
12951
12952 .line 1803
12953 invoke-virtual {v1}, Ljava/lang/Object;->wait()V
12954 :try_end_0
12955 .catchall {:try_start_0 .. :try_end_0} :catchall_0
12956 .catch Ljava/lang/InterruptedException; {:try_start_0 .. :try_end_0} :catch_0
12957
12958 goto :goto_1
12959
12960 .line 1805
12961 :catch_0
12962 move-exception v0
12963
12964 .line 1806
12965 :try_start_1
12966 sget-object v2, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
12967
12968 invoke-static {v2, v0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/Throwable;)I
12969
12970 .line 1808
12971 :cond_2
12972 iget-object v0, v1, Lcom/android/providers/media/MediaThumbRequest;->mState:Lcom/android/providers/media/MediaThumbRequest$State;
12973
12974 sget-object v2, Lcom/android/providers/media/MediaThumbRequest$State;->DONE:Lcom/android/providers/media/MediaThumbRequest$State;
12975
12976 if-ne v0, v2, :cond_3
12977
12978 move v0, v7
12979
12980 .line 1811
12981 :goto_2
12982 monitor-exit v1
12983 :try_end_1
12984 .catchall {:try_start_1 .. :try_end_1} :catchall_0
12985
12986 .line 1813
12987 :goto_3
12988 invoke-interface {v8}, Landroid/database/Cursor;->close()V
12989
12990 move v6, v0
12991
12992 .line 1815
12993 goto :goto_0
12994
12995 .line 1811
12996 :catchall_0
12997 move-exception v0
12998
12999 :try_start_2
13000 monitor-exit v1
13001 :try_end_2
13002 .catchall {:try_start_2 .. :try_end_2} :catchall_0
13003
13004 throw v0
13005
13006 :cond_3
13007 move v0, v6
13008
13009 goto :goto_2
13010
13011 :cond_4
13012 move v0, v6
13013
13014 goto :goto_3
13015.end method
13016
13017.method private writeAlbumArt(ZLandroid/net/Uri;[BLandroid/graphics/Bitmap;)V
13018 .locals 6
13019 .parameter "need_to_recompress"
13020 .parameter "out"
13021 .parameter "compressed"
13022 .parameter "bm"
13023
13024 .prologue
13025 const/4 v5, 0x0
13026
13027 .line 4157
13028 const/4 v2, 0x0
13029
13030 .line 4159
13031 .local v2, success:Z
13032 :try_start_0
13033 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
13034
13035 move-result-object v3
13036
13037 invoke-virtual {v3}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
13038
13039 move-result-object v3
13040
13041 invoke-virtual {v3, p2}, Landroid/content/ContentResolver;->openOutputStream(Landroid/net/Uri;)Ljava/io/OutputStream;
13042
13043 move-result-object v1
13044
13045 .line 4161
13046 .local v1, outstream:Ljava/io/OutputStream;
13047 if-nez p1, :cond_1
13048
13049 .line 4164
13050 invoke-virtual {v1, p3}, Ljava/io/OutputStream;->write([B)V
13051
13052 .line 4165
13053 const/4 v2, 0x1
13054
13055 .line 4170
13056 :goto_0
13057 invoke-virtual {v1}, Ljava/io/OutputStream;->close()V
13058 :try_end_0
13059 .catch Ljava/io/FileNotFoundException; {:try_start_0 .. :try_end_0} :catch_0
13060 .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_1
13061
13062 .line 4176
13063 .end local v1 #outstream:Ljava/io/OutputStream;
13064 :goto_1
13065 if-nez v2, :cond_0
13066
13067 .line 4178
13068 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
13069
13070 move-result-object v3
13071
13072 invoke-virtual {v3}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
13073
13074 move-result-object v3
13075
13076 invoke-virtual {v3, p2, v5, v5}, Landroid/content/ContentResolver;->delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I
13077
13078 .line 4180
13079 :cond_0
13080 return-void
13081
13082 .line 4167
13083 .restart local v1 #outstream:Ljava/io/OutputStream;
13084 :cond_1
13085 :try_start_1
13086 sget-object v3, Landroid/graphics/Bitmap$CompressFormat;->JPEG:Landroid/graphics/Bitmap$CompressFormat;
13087
13088 const/16 v4, 0x55
13089
13090 invoke-virtual {p4, v3, v4, v1}, Landroid/graphics/Bitmap;->compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z
13091 :try_end_1
13092 .catch Ljava/io/FileNotFoundException; {:try_start_1 .. :try_end_1} :catch_0
13093 .catch Ljava/io/IOException; {:try_start_1 .. :try_end_1} :catch_1
13094
13095 move-result v2
13096
13097 goto :goto_0
13098
13099 .line 4171
13100 .end local v1 #outstream:Ljava/io/OutputStream;
13101 :catch_0
13102 move-exception v0
13103
13104 .line 4172
13105 .local v0, ex:Ljava/io/FileNotFoundException;
13106 sget-object v3, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
13107
13108 const-string v4, "error creating file"
13109
13110 invoke-static {v3, v4, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
13111
13112 goto :goto_1
13113
13114 .line 4173
13115 .end local v0 #ex:Ljava/io/FileNotFoundException;
13116 :catch_1
13117 move-exception v0
13118
13119 .line 4174
13120 .local v0, ex:Ljava/io/IOException;
13121 sget-object v3, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
13122
13123 const-string v4, "error creating file"
13124
13125 invoke-static {v3, v4, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
13126
13127 goto :goto_1
13128.end method
13129
13130
13131# virtual methods
13132.method public applyBatch(Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult;
13133 .locals 8
13134 .parameter
13135 .annotation system Ldalvik/annotation/Signature;
13136 value = {
13137 "(",
13138 "Ljava/util/ArrayList",
13139 "<",
13140 "Landroid/content/ContentProviderOperation;",
13141 ">;)[",
13142 "Landroid/content/ContentProviderResult;"
13143 }
13144 .end annotation
13145
13146 .annotation system Ldalvik/annotation/Throws;
13147 value = {
13148 Landroid/content/OperationApplicationException;
13149 }
13150 .end annotation
13151
13152 .prologue
13153 .line 3314
13154 .local p1, operations:Ljava/util/ArrayList;,"Ljava/util/ArrayList<Landroid/content/ContentProviderOperation;>;"
13155 sget-object v6, Landroid/provider/MediaStore$Audio$Media;->INTERNAL_CONTENT_URI:Landroid/net/Uri;
13156
13157 invoke-direct {p0, v6}, Lcom/android/providers/media/MediaProvider;->getDatabaseForUri(Landroid/net/Uri;)Lcom/android/providers/media/MediaProvider$DatabaseHelper;
13158
13159 move-result-object v3
13160
13161 .line 3315
13162 .local v3, ihelper:Lcom/android/providers/media/MediaProvider$DatabaseHelper;
13163 sget-object v6, Landroid/provider/MediaStore$Audio$Media;->EXTERNAL_CONTENT_URI:Landroid/net/Uri;
13164
13165 invoke-direct {p0, v6}, Lcom/android/providers/media/MediaProvider;->getDatabaseForUri(Landroid/net/Uri;)Lcom/android/providers/media/MediaProvider$DatabaseHelper;
13166
13167 move-result-object v1
13168
13169 .line 3316
13170 .local v1, ehelper:Lcom/android/providers/media/MediaProvider$DatabaseHelper;
13171 invoke-virtual {v3}, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->getWritableDatabase()Landroid/database/sqlite/SQLiteDatabase;
13172
13173 move-result-object v2
13174
13175 .line 3317
13176 .local v2, idb:Landroid/database/sqlite/SQLiteDatabase;
13177 invoke-virtual {v2}, Landroid/database/sqlite/SQLiteDatabase;->beginTransaction()V
13178
13179 .line 3318
13180 const/4 v0, 0x0
13181
13182 .line 3319
13183 .local v0, edb:Landroid/database/sqlite/SQLiteDatabase;
13184 if-eqz v1, :cond_0
13185
13186 .line 3320
13187 invoke-virtual {v1}, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->getWritableDatabase()Landroid/database/sqlite/SQLiteDatabase;
13188
13189 move-result-object v0
13190
13191 .line 3321
13192 invoke-virtual {v0}, Landroid/database/sqlite/SQLiteDatabase;->beginTransaction()V
13193
13194 .line 3324
13195 :cond_0
13196 :try_start_0
13197 invoke-super {p0, p1}, Landroid/content/ContentProvider;->applyBatch(Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult;
13198
13199 move-result-object v5
13200
13201 .line 3325
13202 .local v5, result:[Landroid/content/ContentProviderResult;
13203 invoke-virtual {v2}, Landroid/database/sqlite/SQLiteDatabase;->setTransactionSuccessful()V
13204
13205 .line 3326
13206 if-eqz v0, :cond_1
13207
13208 .line 3327
13209 invoke-virtual {v0}, Landroid/database/sqlite/SQLiteDatabase;->setTransactionSuccessful()V
13210
13211 .line 3332
13212 :cond_1
13213 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
13214
13215 move-result-object v6
13216
13217 invoke-virtual {v6}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
13218
13219 move-result-object v4
13220
13221 .line 3333
13222 .local v4, res:Landroid/content/ContentResolver;
13223 const-string v6, "content://media/"
13224
13225 invoke-static {v6}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
13226
13227 move-result-object v6
13228
13229 const/4 v7, 0x0
13230
13231 invoke-virtual {v4, v6, v7}, Landroid/content/ContentResolver;->notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;)V
13232 :try_end_0
13233 .catchall {:try_start_0 .. :try_end_0} :catchall_0
13234
13235 .line 3336
13236 invoke-virtual {v2}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V
13237
13238 .line 3337
13239 if-eqz v0, :cond_2
13240
13241 .line 3338
13242 invoke-virtual {v0}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V
13243
13244 :cond_2
13245 return-object v5
13246
13247 .line 3336
13248 .end local v4 #res:Landroid/content/ContentResolver;
13249 .end local v5 #result:[Landroid/content/ContentProviderResult;
13250 :catchall_0
13251 move-exception v6
13252
13253 invoke-virtual {v2}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V
13254
13255 .line 3337
13256 if-eqz v0, :cond_3
13257
13258 .line 3338
13259 invoke-virtual {v0}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V
13260
13261 :cond_3
13262 throw v6
13263.end method
13264
13265.method public bulkInsert(Landroid/net/Uri;[Landroid/content/ContentValues;)I
13266 .locals 5
13267 .parameter
13268 .parameter
13269
13270 .prologue
13271 .line 2469
13272 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
13273
13274 invoke-virtual {v0, p1}, Landroid/content/UriMatcher;->match(Landroid/net/Uri;)I
13275
13276 move-result v2
13277
13278 .line 2470
13279 const/16 v0, 0x12c
13280
13281 if-ne v2, v0, :cond_0
13282
13283 .line 2471
13284 invoke-super {p0, p1, p2}, Landroid/content/ContentProvider;->bulkInsert(Landroid/net/Uri;[Landroid/content/ContentValues;)I
13285
13286 move-result v0
13287
13288 .line 2505
13289 :goto_0
13290 return v0
13291
13292 .line 2473
13293 :cond_0
13294 invoke-direct {p0, p1}, Lcom/android/providers/media/MediaProvider;->getDatabaseForUri(Landroid/net/Uri;)Lcom/android/providers/media/MediaProvider$DatabaseHelper;
13295
13296 move-result-object v0
13297
13298 .line 2474
13299 if-nez v0, :cond_1
13300
13301 .line 2475
13302 new-instance v0, Ljava/lang/UnsupportedOperationException;
13303
13304 new-instance v1, Ljava/lang/StringBuilder;
13305
13306 invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
13307
13308 const-string v2, "Unknown URI: "
13309
13310 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13311
13312 move-result-object v1
13313
13314 invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
13315
13316 move-result-object v1
13317
13318 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
13319
13320 move-result-object v1
13321
13322 invoke-direct {v0, v1}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
13323
13324 throw v0
13325
13326 .line 2478
13327 :cond_1
13328 invoke-virtual {v0}, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->getWritableDatabase()Landroid/database/sqlite/SQLiteDatabase;
13329
13330 move-result-object v3
13331
13332 .line 2479
13333 if-nez v3, :cond_2
13334
13335 .line 2480
13336 new-instance v0, Ljava/lang/IllegalStateException;
13337
13338 new-instance v1, Ljava/lang/StringBuilder;
13339
13340 invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
13341
13342 const-string v2, "Couldn\'t open database for "
13343
13344 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13345
13346 move-result-object v1
13347
13348 invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
13349
13350 move-result-object v1
13351
13352 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
13353
13354 move-result-object v1
13355
13356 invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
13357
13358 throw v0
13359
13360 .line 2483
13361 :cond_2
13362 const/16 v0, 0x6f
13363
13364 if-eq v2, v0, :cond_3
13365
13366 const/16 v0, 0x70
13367
13368 if-ne v2, v0, :cond_4
13369
13370 .line 2484
13371 :cond_3
13372 invoke-direct {p0, v3, p1, p2}, Lcom/android/providers/media/MediaProvider;->playlistBulkInsert(Landroid/database/sqlite/SQLiteDatabase;Landroid/net/Uri;[Landroid/content/ContentValues;)I
13373
13374 move-result v0
13375
13376 goto :goto_0
13377
13378 .line 2485
13379 :cond_4
13380 const/16 v0, 0x2c0
13381
13382 if-ne v2, v0, :cond_5
13383
13384 .line 2486
13385 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
13386
13387 move-result-object v0
13388
13389 const/4 v1, 0x2
13390
13391 invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
13392
13393 move-result-object v0
13394
13395 check-cast v0, Ljava/lang/String;
13396
13397 invoke-static {v0}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
13398
13399 move-result v0
13400
13401 .line 2487
13402 invoke-direct {p0, v3, v0, p2}, Lcom/android/providers/media/MediaProvider;->setObjectReferences(Landroid/database/sqlite/SQLiteDatabase;I[Landroid/content/ContentValues;)I
13403
13404 move-result v0
13405
13406 goto :goto_0
13407
13408 .line 2490
13409 :cond_5
13410 invoke-virtual {v3}, Landroid/database/sqlite/SQLiteDatabase;->beginTransaction()V
13411
13412 .line 2493
13413 :try_start_0
13414 array-length v0, p2
13415
13416 .line 2494
13417 const/4 v1, 0x0
13418
13419 :goto_1
13420 if-ge v1, v0, :cond_7
13421
13422 .line 2495
13423 aget-object v4, p2, v1
13424
13425 if-eqz v4, :cond_6
13426
13427 .line 2496
13428 aget-object v4, p2, v1
13429
13430 invoke-direct {p0, p1, v2, v4}, Lcom/android/providers/media/MediaProvider;->insertInternal(Landroid/net/Uri;ILandroid/content/ContentValues;)Landroid/net/Uri;
13431
13432 .line 2494
13433 :cond_6
13434 add-int/lit8 v1, v1, 0x1
13435
13436 goto :goto_1
13437
13438 .line 2500
13439 :cond_7
13440 invoke-virtual {v3}, Landroid/database/sqlite/SQLiteDatabase;->setTransactionSuccessful()V
13441 :try_end_0
13442 .catchall {:try_start_0 .. :try_end_0} :catchall_0
13443
13444 .line 2502
13445 invoke-virtual {v3}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V
13446
13447 .line 2504
13448 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
13449
13450 move-result-object v1
13451
13452 invoke-virtual {v1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
13453
13454 move-result-object v1
13455
13456 const/4 v2, 0x0
13457
13458 invoke-virtual {v1, p1, v2}, Landroid/content/ContentResolver;->notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;)V
13459
13460 goto/16 :goto_0
13461
13462 .line 2502
13463 :catchall_0
13464 move-exception v0
13465
13466 invoke-virtual {v3}, Landroid/database/sqlite/SQLiteDatabase;->endTransaction()V
13467
13468 throw v0
13469.end method
13470
13471.method public delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I
13472 .locals 6
13473 .parameter
13474 .parameter
13475 .parameter
13476
13477 .prologue
13478 const/4 v5, 0x0
13479
13480 const/4 v0, 0x1
13481
13482 const/4 v1, 0x0
13483
13484 .line 3542
13485 sget-boolean v2, Lcom/android/providers/media/MediaProvider;->DEBUG:Z
13486
13487 if-eqz v2, :cond_0
13488
13489 sget-object v2, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
13490
13491 new-instance v3, Ljava/lang/StringBuilder;
13492
13493 invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
13494
13495 const-string v4, "delete() in. uri: "
13496
13497 invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13498
13499 move-result-object v3
13500
13501 invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
13502
13503 move-result-object v3
13504
13505 invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
13506
13507 move-result-object v3
13508
13509 invoke-static {v2, v3}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
13510
13511 .line 3543
13512 :cond_0
13513 sget-object v2, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
13514
13515 invoke-virtual {v2, p1}, Landroid/content/UriMatcher;->match(Landroid/net/Uri;)I
13516
13517 move-result v2
13518
13519 .line 3546
13520 const/16 v3, 0x1f4
13521
13522 if-ne v2, v3, :cond_2
13523
13524 .line 3547
13525 iget-object v2, p0, Lcom/android/providers/media/MediaProvider;->mMediaScannerVolume:Ljava/lang/String;
13526
13527 if-nez v2, :cond_1
13528
13529 move v0, v1
13530
13531 .line 3610
13532 :goto_0
13533 return v0
13534
13535 .line 3550
13536 :cond_1
13537 iput-object v5, p0, Lcom/android/providers/media/MediaProvider;->mMediaScannerVolume:Ljava/lang/String;
13538
13539 goto :goto_0
13540
13541 .line 3554
13542 :cond_2
13543 const/16 v3, 0x12d
13544
13545 if-ne v2, v3, :cond_3
13546
13547 .line 3555
13548 invoke-direct {p0, p1}, Lcom/android/providers/media/MediaProvider;->detachVolume(Landroid/net/Uri;)V
13549
13550 goto :goto_0
13551
13552 .line 3557
13553 :cond_3
13554 const/16 v3, 0x2c1
13555
13556 if-ne v2, v3, :cond_5
13557
13558 .line 3558
13559 iget-object v2, p0, Lcom/android/providers/media/MediaProvider;->mMtpServiceConnection:Landroid/content/ServiceConnection;
13560
13561 monitor-enter v2
13562
13563 .line 3559
13564 :try_start_0
13565 iget-object v3, p0, Lcom/android/providers/media/MediaProvider;->mMtpService:Lcom/android/providers/media/IMtpService;
13566
13567 if-eqz v3, :cond_4
13568
13569 .line 3561
13570 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
13571
13572 move-result-object v1
13573
13574 iget-object v3, p0, Lcom/android/providers/media/MediaProvider;->mMtpServiceConnection:Landroid/content/ServiceConnection;
13575
13576 invoke-virtual {v1, v3}, Landroid/content/Context;->unbindService(Landroid/content/ServiceConnection;)V
13577
13578 .line 3565
13579 const/4 v1, 0x0
13580
13581 iput-object v1, p0, Lcom/android/providers/media/MediaProvider;->mMtpService:Lcom/android/providers/media/IMtpService;
13582
13583 .line 3569
13584 :goto_1
13585 monitor-exit v2
13586
13587 goto :goto_0
13588
13589 :catchall_0
13590 move-exception v0
13591
13592 monitor-exit v2
13593 :try_end_0
13594 .catchall {:try_start_0 .. :try_end_0} :catchall_0
13595
13596 throw v0
13597
13598 :cond_4
13599 move v0, v1
13600
13601 .line 3567
13602 goto :goto_1
13603
13604 .line 3571
13605 :cond_5
13606 invoke-direct {p0, p1}, Lcom/android/providers/media/MediaProvider;->getDatabaseForUri(Landroid/net/Uri;)Lcom/android/providers/media/MediaProvider$DatabaseHelper;
13607
13608 move-result-object v0
13609
13610 .line 3572
13611 if-nez v0, :cond_6
13612
13613 .line 3573
13614 new-instance v0, Ljava/lang/UnsupportedOperationException;
13615
13616 new-instance v1, Ljava/lang/StringBuilder;
13617
13618 invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
13619
13620 const-string v3, "Unknown URI: "
13621
13622 invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13623
13624 move-result-object v1
13625
13626 invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
13627
13628 move-result-object v1
13629
13630 const-string v3, " match: "
13631
13632 invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13633
13634 move-result-object v1
13635
13636 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
13637
13638 move-result-object v1
13639
13640 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
13641
13642 move-result-object v1
13643
13644 invoke-direct {v0, v1}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
13645
13646 throw v0
13647
13648 .line 3576
13649 :cond_6
13650 invoke-virtual {v0}, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->getWritableDatabase()Landroid/database/sqlite/SQLiteDatabase;
13651
13652 move-result-object v0
13653
13654 .line 3578
13655 sget-object v3, Lcom/android/providers/media/MediaProvider;->sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
13656
13657 monitor-enter v3
13658
13659 .line 3579
13660 :try_start_1
13661 sget-object v1, Lcom/android/providers/media/MediaProvider;->sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
13662
13663 invoke-direct {p0, p1, v2, p2, v1}, Lcom/android/providers/media/MediaProvider;->getTableAndWhere(Landroid/net/Uri;ILjava/lang/String;Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;)V
13664
13665 .line 3580
13666 sparse-switch v2, :sswitch_data_0
13667
13668 .line 3596
13669 sget-object v1, Lcom/android/providers/media/MediaProvider;->sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
13670
13671 iget-object v1, v1, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
13672
13673 sget-object v2, Lcom/android/providers/media/MediaProvider;->sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
13674
13675 iget-object v2, v2, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->where:Ljava/lang/String;
13676
13677 invoke-virtual {v0, v1, v2, p3}, Landroid/database/sqlite/SQLiteDatabase;->delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I
13678
13679 move-result v1
13680
13681 .line 3604
13682 :goto_2
13683 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
13684
13685 move-result-object v0
13686
13687 const/4 v2, 0x0
13688
13689 invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
13690
13691 move-result-object v0
13692
13693 check-cast v0, Ljava/lang/String;
13694
13695 .line 3605
13696 new-instance v2, Ljava/lang/StringBuilder;
13697
13698 invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
13699
13700 const-string v4, "content://media/"
13701
13702 invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13703
13704 move-result-object v2
13705
13706 invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13707
13708 move-result-object v0
13709
13710 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
13711
13712 move-result-object v0
13713
13714 invoke-static {v0}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
13715
13716 move-result-object v0
13717
13718 .line 3606
13719 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
13720
13721 move-result-object v2
13722
13723 invoke-virtual {v2}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
13724
13725 move-result-object v2
13726
13727 const/4 v4, 0x0
13728
13729 invoke-virtual {v2, v0, v4}, Landroid/content/ContentResolver;->notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;)V
13730
13731 .line 3607
13732 monitor-exit v3
13733 :try_end_1
13734 .catchall {:try_start_1 .. :try_end_1} :catchall_1
13735
13736 move v0, v1
13737
13738 goto/16 :goto_0
13739
13740 .line 3585
13741 :sswitch_0
13742 const/4 v1, 0x1
13743
13744 :try_start_2
13745 iput-boolean v1, p0, Lcom/android/providers/media/MediaProvider;->mDisableMtpObjectCallbacks:Z
13746
13747 .line 3586
13748 const-string v1, "files"
13749
13750 sget-object v2, Lcom/android/providers/media/MediaProvider;->sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
13751
13752 iget-object v2, v2, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->where:Ljava/lang/String;
13753
13754 invoke-virtual {v0, v1, v2, p3}, Landroid/database/sqlite/SQLiteDatabase;->delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I
13755 :try_end_2
13756 .catchall {:try_start_2 .. :try_end_2} :catchall_2
13757
13758 move-result v1
13759
13760 .line 3588
13761 const/4 v0, 0x0
13762
13763 :try_start_3
13764 iput-boolean v0, p0, Lcom/android/providers/media/MediaProvider;->mDisableMtpObjectCallbacks:Z
13765
13766 goto :goto_2
13767
13768 .line 3607
13769 :catchall_1
13770 move-exception v0
13771
13772 monitor-exit v3
13773 :try_end_3
13774 .catchall {:try_start_3 .. :try_end_3} :catchall_1
13775
13776 throw v0
13777
13778 .line 3588
13779 :catchall_2
13780 move-exception v0
13781
13782 const/4 v1, 0x0
13783
13784 :try_start_4
13785 iput-boolean v1, p0, Lcom/android/providers/media/MediaProvider;->mDisableMtpObjectCallbacks:Z
13786
13787 throw v0
13788
13789 .line 3592
13790 :sswitch_1
13791 const-string v1, "audio_genres_map"
13792
13793 sget-object v2, Lcom/android/providers/media/MediaProvider;->sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
13794
13795 iget-object v2, v2, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->where:Ljava/lang/String;
13796
13797 invoke-virtual {v0, v1, v2, p3}, Landroid/database/sqlite/SQLiteDatabase;->delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I
13798 :try_end_4
13799 .catchall {:try_start_4 .. :try_end_4} :catchall_1
13800
13801 move-result v1
13802
13803 goto :goto_2
13804
13805 .line 3580
13806 :sswitch_data_0
13807 .sparse-switch
13808 0x6c -> :sswitch_1
13809 0x2be -> :sswitch_0
13810 0x2bf -> :sswitch_0
13811 .end sparse-switch
13812.end method
13813
13814.method getAlbumArtOutputUri(Landroid/database/sqlite/SQLiteDatabase;JLandroid/net/Uri;)Landroid/net/Uri;
13815 .locals 6
13816 .parameter
13817 .parameter
13818 .parameter
13819
13820 .prologue
13821 const/4 v1, 0x0
13822
13823 const/4 v3, 0x0
13824
13825 .line 4116
13826 .line 4119
13827 if-eqz p4, :cond_5
13828
13829 .line 4120
13830 const/4 v0, 0x1
13831
13832 new-array v2, v0, [Ljava/lang/String;
13833
13834 const-string v0, "_data"
13835
13836 aput-object v0, v2, v1
13837
13838 move-object v0, p0
13839
13840 move-object v1, p4
13841
13842 move-object v4, v3
13843
13844 move-object v5, v3
13845
13846 invoke-virtual/range {v0 .. v5}, Lcom/android/providers/media/MediaProvider;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
13847
13848 move-result-object v1
13849
13850 .line 4123
13851 if-eqz v1, :cond_3
13852
13853 :try_start_0
13854 invoke-interface {v1}, Landroid/database/Cursor;->moveToFirst()Z
13855
13856 move-result v0
13857
13858 if-eqz v0, :cond_3
13859
13860 .line 4124
13861 const/4 v0, 0x0
13862
13863 invoke-interface {v1, v0}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
13864
13865 move-result-object v0
13866
13867 .line 4125
13868 invoke-direct {p0, v0}, Lcom/android/providers/media/MediaProvider;->ensureFileExists(Ljava/lang/String;)Z
13869 :try_end_0
13870 .catchall {:try_start_0 .. :try_end_0} :catchall_0
13871
13872 move-result v0
13873
13874 if-eqz v0, :cond_0
13875
13876 move-object v3, p4
13877
13878 :cond_0
13879 move-object v0, v3
13880
13881 .line 4132
13882 :goto_0
13883 if-eqz v1, :cond_1
13884
13885 .line 4133
13886 invoke-interface {v1}, Landroid/database/Cursor;->close()V
13887
13888 .line 4137
13889 :cond_1
13890 :goto_1
13891 if-nez p4, :cond_2
13892
13893 .line 4138
13894 new-instance v1, Landroid/content/ContentValues;
13895
13896 invoke-direct {v1}, Landroid/content/ContentValues;-><init>()V
13897
13898 .line 4139
13899 const-string v2, "album_id"
13900
13901 invoke-static {p2, p3}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
13902
13903 move-result-object v3
13904
13905 invoke-virtual {v1, v2, v3}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
13906
13907 .line 4141
13908 const/4 v2, 0x0
13909
13910 :try_start_1
13911 const-string v3, ""
13912
13913 const-string v4, "Android/data/com.android.providers.media/albumthumbs"
13914
13915 invoke-direct {p0, v2, v1, v3, v4}, Lcom/android/providers/media/MediaProvider;->ensureFile(ZLandroid/content/ContentValues;Ljava/lang/String;Ljava/lang/String;)Landroid/content/ContentValues;
13916
13917 move-result-object v1
13918
13919 .line 4142
13920 const-string v2, "album_art"
13921
13922 const-string v3, "_data"
13923
13924 invoke-virtual {p1, v2, v3, v1}, Landroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
13925
13926 move-result-wide v1
13927
13928 .line 4143
13929 const-wide/16 v3, 0x0
13930
13931 cmp-long v3, v1, v3
13932
13933 if-lez v3, :cond_2
13934
13935 .line 4144
13936 sget-object v3, Lcom/android/providers/media/MediaProvider;->ALBUMART_URI:Landroid/net/Uri;
13937
13938 invoke-static {v3, v1, v2}, Landroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;
13939 :try_end_1
13940 .catch Ljava/lang/IllegalStateException; {:try_start_1 .. :try_end_1} :catch_0
13941
13942 move-result-object v0
13943
13944 .line 4150
13945 :cond_2
13946 :goto_2
13947 return-object v0
13948
13949 :cond_3
13950 move-object v0, v3
13951
13952 move-object p4, v3
13953
13954 .line 4129
13955 goto :goto_0
13956
13957 .line 4132
13958 :catchall_0
13959 move-exception v0
13960
13961 if-eqz v1, :cond_4
13962
13963 .line 4133
13964 invoke-interface {v1}, Landroid/database/Cursor;->close()V
13965
13966 :cond_4
13967 throw v0
13968
13969 .line 4146
13970 :catch_0
13971 move-exception v1
13972
13973 .line 4147
13974 sget-object v1, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
13975
13976 const-string v2, "error creating album thumb file"
13977
13978 invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
13979
13980 goto :goto_2
13981
13982 :cond_5
13983 move-object v0, v3
13984
13985 goto :goto_1
13986.end method
13987
13988.method public getType(Landroid/net/Uri;)Ljava/lang/String;
13989 .locals 9
13990 .parameter "url"
13991
13992 .prologue
13993 const/4 v8, 0x1
13994
13995 .line 2363
13996 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
13997
13998 invoke-virtual {v0, p1}, Landroid/content/UriMatcher;->match(Landroid/net/Uri;)I
13999
14000 move-result v0
14001
14002 sparse-switch v0, :sswitch_data_0
14003
14004 .line 2413
14005 :cond_0
14006 :goto_0
14007 new-instance v0, Ljava/lang/IllegalStateException;
14008
14009 new-instance v1, Ljava/lang/StringBuilder;
14010
14011 invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
14012
14013 const-string v2, "Unknown URL : "
14014
14015 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14016
14017 move-result-object v1
14018
14019 invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
14020
14021 move-result-object v1
14022
14023 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
14024
14025 move-result-object v1
14026
14027 invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
14028
14029 throw v0
14030
14031 .line 2369
14032 :sswitch_0
14033 const/4 v6, 0x0
14034
14035 .line 2371
14036 .local v6, c:Landroid/database/Cursor;
14037 :try_start_0
14038 sget-object v2, Lcom/android/providers/media/MediaProvider;->MIME_TYPE_PROJECTION:[Ljava/lang/String;
14039
14040 const/4 v3, 0x0
14041
14042 const/4 v4, 0x0
14043
14044 const/4 v5, 0x0
14045
14046 move-object v0, p0
14047
14048 move-object v1, p1
14049
14050 invoke-virtual/range {v0 .. v5}, Lcom/android/providers/media/MediaProvider;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
14051
14052 move-result-object v6
14053
14054 .line 2372
14055 if-eqz v6, :cond_2
14056
14057 invoke-interface {v6}, Landroid/database/Cursor;->getCount()I
14058
14059 move-result v0
14060
14061 if-ne v0, v8, :cond_2
14062
14063 .line 2373
14064 invoke-interface {v6}, Landroid/database/Cursor;->moveToFirst()Z
14065
14066 .line 2374
14067 const/4 v0, 0x1
14068
14069 invoke-interface {v6, v0}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
14070
14071 move-result-object v7
14072
14073 .line 2375
14074 .local v7, mimeType:Ljava/lang/String;
14075 invoke-interface {v6}, Landroid/database/Cursor;->deactivate()V
14076 :try_end_0
14077 .catchall {:try_start_0 .. :try_end_0} :catchall_0
14078
14079 .line 2379
14080 if-eqz v6, :cond_1
14081
14082 .line 2380
14083 invoke-interface {v6}, Landroid/database/Cursor;->close()V
14084
14085 .line 2411
14086 .end local v6 #c:Landroid/database/Cursor;
14087 .end local v7 #mimeType:Ljava/lang/String;
14088 :cond_1
14089 :goto_1
14090 return-object v7
14091
14092 .line 2379
14093 .restart local v6 #c:Landroid/database/Cursor;
14094 :cond_2
14095 if-eqz v6, :cond_0
14096
14097 .line 2380
14098 invoke-interface {v6}, Landroid/database/Cursor;->close()V
14099
14100 goto :goto_0
14101
14102 .line 2379
14103 :catchall_0
14104 move-exception v0
14105
14106 if-eqz v6, :cond_3
14107
14108 .line 2380
14109 invoke-interface {v6}, Landroid/database/Cursor;->close()V
14110
14111 :cond_3
14112 throw v0
14113
14114 .line 2387
14115 .end local v6 #c:Landroid/database/Cursor;
14116 :sswitch_1
14117 const-string v7, "vnd.android.cursor.dir/image"
14118
14119 goto :goto_1
14120
14121 .line 2390
14122 :sswitch_2
14123 const-string v7, "image/jpeg"
14124
14125 goto :goto_1
14126
14127 .line 2395
14128 :sswitch_3
14129 const-string v7, "vnd.android.cursor.dir/audio"
14130
14131 goto :goto_1
14132
14133 .line 2399
14134 :sswitch_4
14135 const-string v7, "vnd.android.cursor.dir/genre"
14136
14137 goto :goto_1
14138
14139 .line 2402
14140 :sswitch_5
14141 const-string v7, "vnd.android.cursor.item/genre"
14142
14143 goto :goto_1
14144
14145 .line 2405
14146 :sswitch_6
14147 const-string v7, "vnd.android.cursor.dir/playlist"
14148
14149 goto :goto_1
14150
14151 .line 2408
14152 :sswitch_7
14153 const-string v7, "vnd.android.cursor.item/playlist"
14154
14155 goto :goto_1
14156
14157 .line 2411
14158 :sswitch_8
14159 const-string v7, "vnd.android.cursor.dir/video"
14160
14161 goto :goto_1
14162
14163 .line 2363
14164 nop
14165
14166 :sswitch_data_0
14167 .sparse-switch
14168 0x1 -> :sswitch_1
14169 0x2 -> :sswitch_0
14170 0x3 -> :sswitch_1
14171 0x4 -> :sswitch_2
14172 0x64 -> :sswitch_3
14173 0x65 -> :sswitch_0
14174 0x66 -> :sswitch_4
14175 0x67 -> :sswitch_5
14176 0x68 -> :sswitch_6
14177 0x69 -> :sswitch_7
14178 0x6a -> :sswitch_4
14179 0x6b -> :sswitch_5
14180 0x6c -> :sswitch_3
14181 0x6e -> :sswitch_6
14182 0x6f -> :sswitch_7
14183 0x70 -> :sswitch_3
14184 0x71 -> :sswitch_0
14185 0x78 -> :sswitch_2
14186 0xc8 -> :sswitch_8
14187 0xc9 -> :sswitch_0
14188 0x2bd -> :sswitch_0
14189 .end sparse-switch
14190.end method
14191
14192.method public insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;
14193 .locals 4
14194 .parameter "uri"
14195 .parameter "initialValues"
14196
14197 .prologue
14198 .line 2510
14199 sget-object v2, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
14200
14201 invoke-virtual {v2, p1}, Landroid/content/UriMatcher;->match(Landroid/net/Uri;)I
14202
14203 move-result v0
14204
14205 .line 2511
14206 .local v0, match:I
14207 invoke-direct {p0, p1, v0, p2}, Lcom/android/providers/media/MediaProvider;->insertInternal(Landroid/net/Uri;ILandroid/content/ContentValues;)Landroid/net/Uri;
14208
14209 move-result-object v1
14210
14211 .line 2514
14212 .local v1, newUri:Landroid/net/Uri;
14213 if-eqz v1, :cond_0
14214
14215 const/16 v2, 0x2be
14216
14217 if-eq v0, v2, :cond_0
14218
14219 .line 2515
14220 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
14221
14222 move-result-object v2
14223
14224 invoke-virtual {v2}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
14225
14226 move-result-object v2
14227
14228 const/4 v3, 0x0
14229
14230 invoke-virtual {v2, p1, v3}, Landroid/content/ContentResolver;->notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;)V
14231
14232 .line 2517
14233 :cond_0
14234 return-object v1
14235.end method
14236
14237.method makeBestName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
14238 .locals 3
14239 .parameter
14240 .parameter
14241
14242 .prologue
14243 const/16 v2, 0x2c
14244
14245 .line 4409
14246 invoke-virtual {p1}, Ljava/lang/String;->length()I
14247
14248 move-result v0
14249
14250 invoke-virtual {p2}, Ljava/lang/String;->length()I
14251
14252 move-result v1
14253
14254 if-le v0, v1, :cond_3
14255
14256 .line 4421
14257 :cond_0
14258 :goto_0
14259 const-string v0, ", the"
14260
14261 invoke-virtual {p1, v0}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
14262
14263 move-result v0
14264
14265 if-nez v0, :cond_1
14266
14267 const-string v0, ",the"
14268
14269 invoke-virtual {p1, v0}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
14270
14271 move-result v0
14272
14273 if-nez v0, :cond_1
14274
14275 const-string v0, ", an"
14276
14277 invoke-virtual {p1, v0}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
14278
14279 move-result v0
14280
14281 if-nez v0, :cond_1
14282
14283 const-string v0, ",an"
14284
14285 invoke-virtual {p1, v0}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
14286
14287 move-result v0
14288
14289 if-nez v0, :cond_1
14290
14291 const-string v0, ", a"
14292
14293 invoke-virtual {p1, v0}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
14294
14295 move-result v0
14296
14297 if-nez v0, :cond_1
14298
14299 const-string v0, ",a"
14300
14301 invoke-virtual {p1, v0}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
14302
14303 move-result v0
14304
14305 if-eqz v0, :cond_2
14306
14307 .line 4424
14308 :cond_1
14309 invoke-virtual {p1, v2}, Ljava/lang/String;->lastIndexOf(I)I
14310
14311 move-result v0
14312
14313 add-int/lit8 v0, v0, 0x1
14314
14315 invoke-virtual {p1, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String;
14316
14317 move-result-object v0
14318
14319 .line 4425
14320 new-instance v1, Ljava/lang/StringBuilder;
14321
14322 invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
14323
14324 invoke-virtual {v0}, Ljava/lang/String;->trim()Ljava/lang/String;
14325
14326 move-result-object v0
14327
14328 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14329
14330 move-result-object v0
14331
14332 const-string v1, " "
14333
14334 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14335
14336 move-result-object v0
14337
14338 const/4 v1, 0x0
14339
14340 invoke-virtual {p1, v2}, Ljava/lang/String;->lastIndexOf(I)I
14341
14342 move-result v2
14343
14344 invoke-virtual {p1, v1, v2}, Ljava/lang/String;->substring(II)Ljava/lang/String;
14345
14346 move-result-object v1
14347
14348 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14349
14350 move-result-object v0
14351
14352 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
14353
14354 move-result-object p1
14355
14356 .line 4429
14357 :cond_2
14358 return-object p1
14359
14360 .line 4413
14361 :cond_3
14362 invoke-virtual {p1}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;
14363
14364 move-result-object v0
14365
14366 invoke-virtual {p2}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;
14367
14368 move-result-object v1
14369
14370 invoke-virtual {v0, v1}, Ljava/lang/String;->compareTo(Ljava/lang/String;)I
14371
14372 move-result v0
14373
14374 if-gtz v0, :cond_0
14375
14376 move-object p1, p2
14377
14378 .line 4416
14379 goto :goto_0
14380.end method
14381
14382.method public onCreate()Z
14383 .locals 7
14384
14385 .prologue
14386 const/4 v6, 0x5
14387
14388 const/4 v5, 0x1
14389
14390 .line 502
14391 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
14392
14393 move-result-object v0
14394
14395 .line 504
14396 sget-object v1, Lcom/android/providers/media/MediaProvider;->sArtistAlbumsMap:Ljava/util/HashMap;
14397
14398 const-string v2, "_id"
14399
14400 const-string v3, "audio.album_id AS _id"
14401
14402 invoke-virtual {v1, v2, v3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
14403
14404 .line 506
14405 sget-object v1, Lcom/android/providers/media/MediaProvider;->sArtistAlbumsMap:Ljava/util/HashMap;
14406
14407 const-string v2, "album"
14408
14409 const-string v3, "album"
14410
14411 invoke-virtual {v1, v2, v3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
14412
14413 .line 507
14414 sget-object v1, Lcom/android/providers/media/MediaProvider;->sArtistAlbumsMap:Ljava/util/HashMap;
14415
14416 const-string v2, "album_key"
14417
14418 const-string v3, "album_key"
14419
14420 invoke-virtual {v1, v2, v3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
14421
14422 .line 508
14423 sget-object v1, Lcom/android/providers/media/MediaProvider;->sArtistAlbumsMap:Ljava/util/HashMap;
14424
14425 const-string v2, "minyear"
14426
14427 const-string v3, "MIN(year) AS minyear"
14428
14429 invoke-virtual {v1, v2, v3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
14430
14431 .line 510
14432 sget-object v1, Lcom/android/providers/media/MediaProvider;->sArtistAlbumsMap:Ljava/util/HashMap;
14433
14434 const-string v2, "maxyear"
14435
14436 const-string v3, "MAX(year) AS maxyear"
14437
14438 invoke-virtual {v1, v2, v3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
14439
14440 .line 512
14441 sget-object v1, Lcom/android/providers/media/MediaProvider;->sArtistAlbumsMap:Ljava/util/HashMap;
14442
14443 const-string v2, "artist"
14444
14445 const-string v3, "artist"
14446
14447 invoke-virtual {v1, v2, v3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
14448
14449 .line 513
14450 sget-object v1, Lcom/android/providers/media/MediaProvider;->sArtistAlbumsMap:Ljava/util/HashMap;
14451
14452 const-string v2, "artist_id"
14453
14454 const-string v3, "artist"
14455
14456 invoke-virtual {v1, v2, v3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
14457
14458 .line 514
14459 sget-object v1, Lcom/android/providers/media/MediaProvider;->sArtistAlbumsMap:Ljava/util/HashMap;
14460
14461 const-string v2, "artist_key"
14462
14463 const-string v3, "artist_key"
14464
14465 invoke-virtual {v1, v2, v3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
14466
14467 .line 515
14468 sget-object v1, Lcom/android/providers/media/MediaProvider;->sArtistAlbumsMap:Ljava/util/HashMap;
14469
14470 const-string v2, "numsongs"
14471
14472 const-string v3, "count(*) AS numsongs"
14473
14474 invoke-virtual {v1, v2, v3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
14475
14476 .line 517
14477 sget-object v1, Lcom/android/providers/media/MediaProvider;->sArtistAlbumsMap:Ljava/util/HashMap;
14478
14479 const-string v2, "album_art"
14480
14481 const-string v3, "album_art._data AS album_art"
14482
14483 invoke-virtual {v1, v2, v3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
14484
14485 .line 520
14486 iget-object v1, p0, Lcom/android/providers/media/MediaProvider;->mSearchColsBasic:[Ljava/lang/String;
14487
14488 iget-object v2, p0, Lcom/android/providers/media/MediaProvider;->mSearchColsBasic:[Ljava/lang/String;
14489
14490 aget-object v2, v2, v6
14491
14492 const-string v3, "%1"
14493
14494 const v4, 0x7f040003
14495
14496 invoke-virtual {v0, v4}, Landroid/content/Context;->getString(I)Ljava/lang/String;
14497
14498 move-result-object v4
14499
14500 invoke-virtual {v2, v3, v4}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
14501
14502 move-result-object v2
14503
14504 aput-object v2, v1, v6
14505
14506 .line 523
14507 new-instance v1, Ljava/util/HashMap;
14508
14509 invoke-direct {v1}, Ljava/util/HashMap;-><init>()V
14510
14511 iput-object v1, p0, Lcom/android/providers/media/MediaProvider;->mDatabases:Ljava/util/HashMap;
14512
14513 .line 524
14514 const-string v1, "internal"
14515
14516 invoke-direct {p0, v1}, Lcom/android/providers/media/MediaProvider;->attachVolume(Ljava/lang/String;)Landroid/net/Uri;
14517
14518 .line 526
14519 new-instance v1, Landroid/content/IntentFilter;
14520
14521 const-string v2, "android.intent.action.MEDIA_EJECT"
14522
14523 invoke-direct {v1, v2}, Landroid/content/IntentFilter;-><init>(Ljava/lang/String;)V
14524
14525 .line 527
14526 const-string v2, "file"
14527
14528 invoke-virtual {v1, v2}, Landroid/content/IntentFilter;->addDataScheme(Ljava/lang/String;)V
14529
14530 .line 528
14531 iget-object v2, p0, Lcom/android/providers/media/MediaProvider;->mUnmountReceiver:Landroid/content/BroadcastReceiver;
14532
14533 invoke-virtual {v0, v2, v1}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
14534
14535 .line 530
14536 new-instance v1, Landroid/content/IntentFilter;
14537
14538 const-string v2, "android.intent.action.ACTION_SHUTDOWN"
14539
14540 invoke-direct {v1, v2}, Landroid/content/IntentFilter;-><init>(Ljava/lang/String;)V
14541
14542 .line 531
14543 iget-object v2, p0, Lcom/android/providers/media/MediaProvider;->mShutdownReceiver:Landroid/content/BroadcastReceiver;
14544
14545 invoke-virtual {v0, v2, v1}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
14546
14547 .line 533
14548 iput-boolean v5, p0, Lcom/android/providers/media/MediaProvider;->mCaseInsensitivePaths:Z
14549
14550 .line 535
14551 const-string v1, "storage"
14552
14553 invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
14554
14555 move-result-object v0
14556
14557 check-cast v0, Landroid/os/storage/StorageManager;
14558
14559 .line 537
14560 invoke-virtual {v0}, Landroid/os/storage/StorageManager;->getVolumePaths()[Ljava/lang/String;
14561
14562 move-result-object v0
14563
14564 sput-object v0, Lcom/android/providers/media/MediaProvider;->mExternalStoragePaths:[Ljava/lang/String;
14565
14566 .line 540
14567 invoke-static {}, Landroid/os/Environment;->getExternalStorageState()Ljava/lang/String;
14568
14569 move-result-object v0
14570
14571 .line 541
14572 const-string v1, "mounted"
14573
14574 invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
14575
14576 move-result v1
14577
14578 if-nez v1, :cond_0
14579
14580 const-string v1, "mounted_ro"
14581
14582 invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
14583
14584 move-result v0
14585
14586 if-eqz v0, :cond_1
14587
14588 .line 543
14589 :cond_0
14590 const-string v0, "external"
14591
14592 invoke-direct {p0, v0}, Lcom/android/providers/media/MediaProvider;->attachVolume(Ljava/lang/String;)Landroid/net/Uri;
14593
14594 .line 546
14595 :cond_1
14596 new-instance v0, Landroid/os/HandlerThread;
14597
14598 const-string v1, "thumbs thread"
14599
14600 const/16 v2, 0xa
14601
14602 invoke-direct {v0, v1, v2}, Landroid/os/HandlerThread;-><init>(Ljava/lang/String;I)V
14603
14604 .line 547
14605 invoke-virtual {v0}, Landroid/os/HandlerThread;->start()V
14606
14607 .line 548
14608 new-instance v1, Lcom/android/providers/media/MediaProvider$5;
14609
14610 invoke-virtual {v0}, Landroid/os/HandlerThread;->getLooper()Landroid/os/Looper;
14611
14612 move-result-object v0
14613
14614 invoke-direct {v1, p0, v0}, Lcom/android/providers/media/MediaProvider$5;-><init>(Lcom/android/providers/media/MediaProvider;Landroid/os/Looper;)V
14615
14616 iput-object v1, p0, Lcom/android/providers/media/MediaProvider;->mThumbHandler:Landroid/os/Handler;
14617
14618 .line 606
14619 return v5
14620.end method
14621
14622.method public openFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
14623 .locals 12
14624 .parameter
14625 .parameter
14626 .annotation system Ldalvik/annotation/Throws;
14627 value = {
14628 Ljava/io/FileNotFoundException;
14629 }
14630 .end annotation
14631
14632 .prologue
14633 const/4 v4, 0x3
14634
14635 const/4 v11, 0x1
14636
14637 const/4 v10, 0x0
14638
14639 const/4 v3, 0x0
14640
14641 .line 3900
14642 .line 3902
14643 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
14644
14645 invoke-virtual {v0, p1}, Landroid/content/UriMatcher;->match(Landroid/net/Uri;)I
14646
14647 move-result v0
14648
14649 const/16 v1, 0x79
14650
14651 if-ne v0, v1, :cond_3
14652
14653 .line 3904
14654 invoke-direct {p0, p1}, Lcom/android/providers/media/MediaProvider;->getDatabaseForUri(Landroid/net/Uri;)Lcom/android/providers/media/MediaProvider$DatabaseHelper;
14655
14656 move-result-object v0
14657
14658 .line 3905
14659 if-nez v0, :cond_0
14660
14661 .line 3906
14662 new-instance v0, Ljava/lang/IllegalStateException;
14663
14664 new-instance v1, Ljava/lang/StringBuilder;
14665
14666 invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
14667
14668 const-string v2, "Couldn\'t open database for "
14669
14670 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14671
14672 move-result-object v1
14673
14674 invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
14675
14676 move-result-object v1
14677
14678 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
14679
14680 move-result-object v1
14681
14682 invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
14683
14684 throw v0
14685
14686 .line 3908
14687 :cond_0
14688 invoke-virtual {v0}, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->getReadableDatabase()Landroid/database/sqlite/SQLiteDatabase;
14689
14690 move-result-object v1
14691
14692 .line 3909
14693 if-nez v1, :cond_1
14694
14695 .line 3910
14696 new-instance v0, Ljava/lang/IllegalStateException;
14697
14698 new-instance v1, Ljava/lang/StringBuilder;
14699
14700 invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
14701
14702 const-string v2, "Couldn\'t open database for "
14703
14704 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14705
14706 move-result-object v1
14707
14708 invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
14709
14710 move-result-object v1
14711
14712 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
14713
14714 move-result-object v1
14715
14716 invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
14717
14718 throw v0
14719
14720 .line 3912
14721 :cond_1
14722 new-instance v0, Landroid/database/sqlite/SQLiteQueryBuilder;
14723
14724 invoke-direct {v0}, Landroid/database/sqlite/SQLiteQueryBuilder;-><init>()V
14725
14726 .line 3913
14727 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
14728
14729 move-result-object v2
14730
14731 invoke-interface {v2, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
14732
14733 move-result-object v2
14734
14735 check-cast v2, Ljava/lang/String;
14736
14737 invoke-static {v2}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
14738
14739 move-result v2
14740
14741 .line 3914
14742 const-string v4, "audio_meta"
14743
14744 invoke-virtual {v0, v4}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
14745
14746 .line 3915
14747 new-instance v4, Ljava/lang/StringBuilder;
14748
14749 invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
14750
14751 const-string v5, "_id="
14752
14753 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14754
14755 move-result-object v4
14756
14757 invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
14758
14759 move-result-object v2
14760
14761 invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
14762
14763 move-result-object v2
14764
14765 invoke-virtual {v0, v2}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
14766
14767 .line 3916
14768 const/4 v2, 0x2
14769
14770 new-array v2, v2, [Ljava/lang/String;
14771
14772 const-string v4, "_data"
14773
14774 aput-object v4, v2, v10
14775
14776 const-string v4, "album_id"
14777
14778 aput-object v4, v2, v11
14779
14780 move-object v4, v3
14781
14782 move-object v5, v3
14783
14784 move-object v6, v3
14785
14786 move-object v7, v3
14787
14788 invoke-virtual/range {v0 .. v7}, Landroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
14789
14790 move-result-object v0
14791
14792 .line 3921
14793 invoke-interface {v0}, Landroid/database/Cursor;->moveToFirst()Z
14794
14795 move-result v2
14796
14797 if-eqz v2, :cond_2
14798
14799 .line 3922
14800 invoke-interface {v0, v10}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
14801
14802 move-result-object v6
14803
14804 .line 3923
14805 invoke-interface {v0, v11}, Landroid/database/Cursor;->getInt(I)I
14806
14807 move-result v2
14808
14809 .line 3927
14810 sget-object v4, Lcom/android/providers/media/MediaProvider;->ALBUMART_URI:Landroid/net/Uri;
14811
14812 int-to-long v7, v2
14813
14814 invoke-static {v4, v7, v8}, Landroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;
14815
14816 move-result-object v4
14817
14818 .line 3929
14819 :try_start_0
14820 invoke-virtual {p0, v4, p2}, Lcom/android/providers/media/MediaProvider;->openFileHelper(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
14821 :try_end_0
14822 .catch Ljava/io/FileNotFoundException; {:try_start_0 .. :try_end_0} :catch_0
14823
14824 move-result-object v3
14825
14826 .line 3935
14827 :cond_2
14828 :goto_0
14829 invoke-interface {v0}, Landroid/database/Cursor;->close()V
14830
14831 .line 3975
14832 :goto_1
14833 return-object v3
14834
14835 .line 3930
14836 :catch_0
14837 move-exception v4
14838
14839 .line 3932
14840 int-to-long v7, v2
14841
14842 move-object v4, p0
14843
14844 move-object v5, v1
14845
14846 move-object v9, v3
14847
14848 invoke-direct/range {v4 .. v9}, Lcom/android/providers/media/MediaProvider;->getThumb(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;JLandroid/net/Uri;)Landroid/os/ParcelFileDescriptor;
14849
14850 move-result-object v3
14851
14852 goto :goto_0
14853
14854 .line 3940
14855 :cond_3
14856 :try_start_1
14857 invoke-virtual {p0, p1, p2}, Lcom/android/providers/media/MediaProvider;->openFileHelper(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
14858 :try_end_1
14859 .catch Ljava/io/FileNotFoundException; {:try_start_1 .. :try_end_1} :catch_1
14860
14861 move-result-object v0
14862
14863 :cond_4
14864 move-object v3, v0
14865
14866 .line 3975
14867 goto :goto_1
14868
14869 .line 3941
14870 :catch_1
14871 move-exception v8
14872
14873 .line 3942
14874 const-string v0, "w"
14875
14876 invoke-virtual {p2, v0}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
14877
14878 move-result v0
14879
14880 if-eqz v0, :cond_5
14881
14882 .line 3944
14883 throw v8
14884
14885 .line 3947
14886 :cond_5
14887 sget-object v0, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
14888
14889 invoke-virtual {v0, p1}, Landroid/content/UriMatcher;->match(Landroid/net/Uri;)I
14890
14891 move-result v0
14892
14893 const/16 v1, 0x78
14894
14895 if-ne v0, v1, :cond_9
14896
14897 .line 3949
14898 invoke-direct {p0, p1}, Lcom/android/providers/media/MediaProvider;->getDatabaseForUri(Landroid/net/Uri;)Lcom/android/providers/media/MediaProvider$DatabaseHelper;
14899
14900 move-result-object v0
14901
14902 .line 3950
14903 if-nez v0, :cond_6
14904
14905 .line 3951
14906 throw v8
14907
14908 .line 3953
14909 :cond_6
14910 invoke-virtual {v0}, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->getReadableDatabase()Landroid/database/sqlite/SQLiteDatabase;
14911
14912 move-result-object v1
14913
14914 .line 3954
14915 if-nez v1, :cond_7
14916
14917 .line 3955
14918 new-instance v0, Ljava/lang/IllegalStateException;
14919
14920 new-instance v1, Ljava/lang/StringBuilder;
14921
14922 invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
14923
14924 const-string v2, "Couldn\'t open database for "
14925
14926 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14927
14928 move-result-object v1
14929
14930 invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
14931
14932 move-result-object v1
14933
14934 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
14935
14936 move-result-object v1
14937
14938 invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
14939
14940 throw v0
14941
14942 .line 3957
14943 :cond_7
14944 new-instance v0, Landroid/database/sqlite/SQLiteQueryBuilder;
14945
14946 invoke-direct {v0}, Landroid/database/sqlite/SQLiteQueryBuilder;-><init>()V
14947
14948 .line 3958
14949 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
14950
14951 move-result-object v2
14952
14953 invoke-interface {v2, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
14954
14955 move-result-object v2
14956
14957 check-cast v2, Ljava/lang/String;
14958
14959 invoke-static {v2}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
14960
14961 move-result v9
14962
14963 .line 3959
14964 const-string v2, "audio_meta"
14965
14966 invoke-virtual {v0, v2}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
14967
14968 .line 3960
14969 new-instance v2, Ljava/lang/StringBuilder;
14970
14971 invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
14972
14973 const-string v4, "album_id="
14974
14975 invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14976
14977 move-result-object v2
14978
14979 invoke-virtual {v2, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
14980
14981 move-result-object v2
14982
14983 invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
14984
14985 move-result-object v2
14986
14987 invoke-virtual {v0, v2}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
14988
14989 .line 3961
14990 new-array v2, v11, [Ljava/lang/String;
14991
14992 const-string v4, "_data"
14993
14994 aput-object v4, v2, v10
14995
14996 const-string v7, "track"
14997
14998 move-object v4, v3
14999
15000 move-object v5, v3
15001
15002 move-object v6, v3
15003
15004 invoke-virtual/range {v0 .. v7}, Landroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
15005
15006 move-result-object v6
15007
15008 .line 3965
15009 invoke-interface {v6}, Landroid/database/Cursor;->moveToFirst()Z
15010
15011 move-result v0
15012
15013 if-eqz v0, :cond_8
15014
15015 .line 3966
15016 invoke-interface {v6, v10}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
15017
15018 move-result-object v2
15019
15020 .line 3967
15021 int-to-long v3, v9
15022
15023 move-object v0, p0
15024
15025 move-object v5, p1
15026
15027 invoke-direct/range {v0 .. v5}, Lcom/android/providers/media/MediaProvider;->getThumb(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;JLandroid/net/Uri;)Landroid/os/ParcelFileDescriptor;
15028
15029 move-result-object v3
15030
15031 .line 3969
15032 :cond_8
15033 invoke-interface {v6}, Landroid/database/Cursor;->close()V
15034
15035 move-object v0, v3
15036
15037 .line 3971
15038 :goto_2
15039 if-nez v0, :cond_4
15040
15041 .line 3972
15042 throw v8
15043
15044 :cond_9
15045 move-object v0, v3
15046
15047 goto :goto_2
15048.end method
15049
15050.method public query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
15051 .locals 13
15052 .parameter
15053 .parameter
15054 .parameter
15055 .parameter
15056 .parameter
15057
15058 .prologue
15059 .line 1899
15060 sget-object v1, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
15061
15062 invoke-virtual {v1, p1}, Landroid/content/UriMatcher;->match(Landroid/net/Uri;)I
15063
15064 move-result v11
15065
15066 .line 1900
15067 new-instance v8, Ljava/util/ArrayList;
15068
15069 invoke-direct {v8}, Ljava/util/ArrayList;-><init>()V
15070
15071 .line 1904
15072 const/16 v1, 0x1f4
15073
15074 if-ne v11, v1, :cond_2
15075
15076 .line 1905
15077 iget-object v1, p0, Lcom/android/providers/media/MediaProvider;->mMediaScannerVolume:Ljava/lang/String;
15078
15079 if-nez v1, :cond_1
15080
15081 .line 1906
15082 const/4 v1, 0x0
15083
15084 .line 2293
15085 :cond_0
15086 :goto_0
15087 return-object v1
15088
15089 .line 1909
15090 :cond_1
15091 new-instance v1, Landroid/database/MatrixCursor;
15092
15093 const/4 v2, 0x1
15094
15095 new-array v2, v2, [Ljava/lang/String;
15096
15097 const/4 v3, 0x0
15098
15099 const-string v4, "volume"
15100
15101 aput-object v4, v2, v3
15102
15103 invoke-direct {v1, v2}, Landroid/database/MatrixCursor;-><init>([Ljava/lang/String;)V
15104
15105 .line 1910
15106 const/4 v2, 0x1
15107
15108 new-array v2, v2, [Ljava/lang/String;
15109
15110 const/4 v3, 0x0
15111
15112 iget-object v4, p0, Lcom/android/providers/media/MediaProvider;->mMediaScannerVolume:Ljava/lang/String;
15113
15114 aput-object v4, v2, v3
15115
15116 invoke-virtual {v1, v2}, Landroid/database/MatrixCursor;->addRow([Ljava/lang/Object;)V
15117
15118 goto :goto_0
15119
15120 .line 1918
15121 :cond_2
15122 const/16 v1, 0x258
15123
15124 if-ne v11, v1, :cond_3
15125
15126 .line 1919
15127 new-instance v1, Landroid/database/MatrixCursor;
15128
15129 const/4 v2, 0x1
15130
15131 new-array v2, v2, [Ljava/lang/String;
15132
15133 const/4 v3, 0x0
15134
15135 const-string v4, "fsid"
15136
15137 aput-object v4, v2, v3
15138
15139 invoke-direct {v1, v2}, Landroid/database/MatrixCursor;-><init>([Ljava/lang/String;)V
15140
15141 .line 1920
15142 const/4 v2, 0x1
15143
15144 new-array v2, v2, [Ljava/lang/Integer;
15145
15146 const/4 v3, 0x0
15147
15148 iget v4, p0, Lcom/android/providers/media/MediaProvider;->mVolumeId:I
15149
15150 invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
15151
15152 move-result-object v4
15153
15154 aput-object v4, v2, v3
15155
15156 invoke-virtual {v1, v2}, Landroid/database/MatrixCursor;->addRow([Ljava/lang/Object;)V
15157
15158 goto :goto_0
15159
15160 .line 1924
15161 :cond_3
15162 const/16 v1, 0x259
15163
15164 if-ne v11, v1, :cond_4
15165
15166 .line 1925
15167 new-instance v1, Landroid/database/MatrixCursor;
15168
15169 const/4 v2, 0x1
15170
15171 new-array v2, v2, [Ljava/lang/String;
15172
15173 const/4 v3, 0x0
15174
15175 const-string v4, "version"
15176
15177 aput-object v4, v2, v3
15178
15179 invoke-direct {v1, v2}, Landroid/database/MatrixCursor;-><init>([Ljava/lang/String;)V
15180
15181 .line 1926
15182 const/4 v2, 0x1
15183
15184 new-array v2, v2, [Ljava/lang/Integer;
15185
15186 const/4 v3, 0x0
15187
15188 const/16 v4, 0x198
15189
15190 invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
15191
15192 move-result-object v4
15193
15194 aput-object v4, v2, v3
15195
15196 invoke-virtual {v1, v2}, Landroid/database/MatrixCursor;->addRow([Ljava/lang/Object;)V
15197
15198 goto :goto_0
15199
15200 .line 1930
15201 :cond_4
15202 const/4 v7, 0x0
15203
15204 .line 1931
15205 invoke-direct {p0, p1}, Lcom/android/providers/media/MediaProvider;->getDatabaseForUri(Landroid/net/Uri;)Lcom/android/providers/media/MediaProvider$DatabaseHelper;
15206
15207 move-result-object v1
15208
15209 .line 1932
15210 if-nez v1, :cond_5
15211
15212 .line 1933
15213 const/4 v1, 0x0
15214
15215 goto :goto_0
15216
15217 .line 1935
15218 :cond_5
15219 invoke-virtual {v1}, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->getReadableDatabase()Landroid/database/sqlite/SQLiteDatabase;
15220
15221 move-result-object v10
15222
15223 .line 1936
15224 if-nez v10, :cond_6
15225
15226 const/4 v1, 0x0
15227
15228 goto :goto_0
15229
15230 .line 1937
15231 :cond_6
15232 new-instance v2, Landroid/database/sqlite/SQLiteQueryBuilder;
15233
15234 invoke-direct {v2}, Landroid/database/sqlite/SQLiteQueryBuilder;-><init>()V
15235
15236 .line 1938
15237 const-string v1, "limit"
15238
15239 invoke-virtual {p1, v1}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
15240
15241 move-result-object v12
15242
15243 .line 1939
15244 const-string v1, "filter"
15245
15246 invoke-virtual {p1, v1}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
15247
15248 move-result-object v3
15249
15250 .line 1940
15251 const/4 v1, 0x0
15252
15253 .line 1941
15254 if-eqz v3, :cond_7
15255
15256 .line 1942
15257 invoke-static {v3}, Landroid/net/Uri;->decode(Ljava/lang/String;)Ljava/lang/String;
15258
15259 move-result-object v3
15260
15261 invoke-virtual {v3}, Ljava/lang/String;->trim()Ljava/lang/String;
15262
15263 move-result-object v3
15264
15265 .line 1943
15266 invoke-static {v3}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
15267
15268 move-result v4
15269
15270 if-nez v4, :cond_7
15271
15272 .line 1944
15273 const-string v1, " "
15274
15275 invoke-virtual {v3, v1}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
15276
15277 move-result-object v4
15278
15279 .line 1945
15280 array-length v1, v4
15281
15282 new-array v3, v1, [Ljava/lang/String;
15283
15284 .line 1946
15285 invoke-static {}, Ljava/text/Collator;->getInstance()Ljava/text/Collator;
15286
15287 move-result-object v1
15288
15289 .line 1947
15290 const/4 v5, 0x0
15291
15292 invoke-virtual {v1, v5}, Ljava/text/Collator;->setStrength(I)V
15293
15294 .line 1948
15295 const/4 v1, 0x0
15296
15297 :goto_1
15298 array-length v5, v4
15299
15300 if-ge v1, v5, :cond_8
15301
15302 .line 1949
15303 aget-object v5, v4, v1
15304
15305 invoke-static {v5}, Landroid/provider/MediaStore$Audio;->keyFor(Ljava/lang/String;)Ljava/lang/String;
15306
15307 move-result-object v5
15308
15309 .line 1950
15310 const-string v6, "\\"
15311
15312 const-string v9, "\\\\"
15313
15314 invoke-virtual {v5, v6, v9}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
15315
15316 move-result-object v5
15317
15318 .line 1951
15319 const-string v6, "%"
15320
15321 const-string v9, "\\%"
15322
15323 invoke-virtual {v5, v6, v9}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
15324
15325 move-result-object v5
15326
15327 .line 1952
15328 const-string v6, "_"
15329
15330 const-string v9, "\\_"
15331
15332 invoke-virtual {v5, v6, v9}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
15333
15334 move-result-object v5
15335
15336 .line 1953
15337 aput-object v5, v3, v1
15338
15339 .line 1948
15340 add-int/lit8 v1, v1, 0x1
15341
15342 goto :goto_1
15343
15344 :cond_7
15345 move-object v3, v1
15346
15347 .line 1957
15348 :cond_8
15349 const-string v1, "distinct"
15350
15351 invoke-virtual {p1, v1}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
15352
15353 move-result-object v1
15354
15355 if-eqz v1, :cond_9
15356
15357 .line 1958
15358 const/4 v1, 0x1
15359
15360 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setDistinct(Z)V
15361
15362 .line 1961
15363 :cond_9
15364 const/4 v6, 0x0
15365
15366 .line 1963
15367 sparse-switch v11, :sswitch_data_0
15368
15369 .line 2281
15370 new-instance v1, Ljava/lang/IllegalStateException;
15371
15372 new-instance v2, Ljava/lang/StringBuilder;
15373
15374 invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
15375
15376 const-string v3, "Unknown URL: "
15377
15378 invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15379
15380 move-result-object v2
15381
15382 invoke-virtual {p1}, Landroid/net/Uri;->toString()Ljava/lang/String;
15383
15384 move-result-object v3
15385
15386 invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15387
15388 move-result-object v2
15389
15390 invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
15391
15392 move-result-object v2
15393
15394 invoke-direct {v1, v2}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
15395
15396 throw v1
15397
15398 .line 1965
15399 :sswitch_0
15400 const-string v1, "images"
15401
15402 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
15403
15404 .line 1966
15405 const-string v1, "distinct"
15406
15407 invoke-virtual {p1, v1}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
15408
15409 move-result-object v1
15410
15411 if-eqz v1, :cond_a
15412
15413 .line 1967
15414 const/4 v1, 0x1
15415
15416 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setDistinct(Z)V
15417
15418 .line 2286
15419 :cond_a
15420 :goto_2
15421 move-object/from16 v0, p4
15422
15423 invoke-direct {p0, v8, v0}, Lcom/android/providers/media/MediaProvider;->combine(Ljava/util/List;[Ljava/lang/String;)[Ljava/lang/String;
15424
15425 move-result-object v6
15426
15427 const/4 v8, 0x0
15428
15429 move-object v3, v10
15430
15431 move-object v4, p2
15432
15433 move-object/from16 v5, p3
15434
15435 move-object/from16 v9, p5
15436
15437 move-object v10, v12
15438
15439 invoke-virtual/range {v2 .. v10}, Landroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
15440
15441 move-result-object v1
15442
15443 .line 2289
15444 if-eqz v1, :cond_0
15445
15446 .line 2290
15447 invoke-virtual {p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
15448
15449 move-result-object v2
15450
15451 invoke-virtual {v2}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
15452
15453 move-result-object v2
15454
15455 invoke-interface {v1, v2, p1}, Landroid/database/Cursor;->setNotificationUri(Landroid/content/ContentResolver;Landroid/net/Uri;)V
15456
15457 goto/16 :goto_0
15458
15459 .line 1974
15460 :sswitch_1
15461 const-string v1, "images"
15462
15463 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
15464
15465 .line 1975
15466 const-string v1, "distinct"
15467
15468 invoke-virtual {p1, v1}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
15469
15470 move-result-object v1
15471
15472 if-eqz v1, :cond_b
15473
15474 .line 1976
15475 const/4 v1, 0x1
15476
15477 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setDistinct(Z)V
15478
15479 .line 1980
15480 :cond_b
15481 const-string v1, "_id=?"
15482
15483 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
15484
15485 .line 1981
15486 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
15487
15488 move-result-object v1
15489
15490 const/4 v3, 0x3
15491
15492 invoke-interface {v1, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
15493
15494 move-result-object v1
15495
15496 invoke-interface {v8, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
15497
15498 goto :goto_2
15499
15500 .line 1985
15501 :sswitch_2
15502 const/4 v6, 0x1
15503
15504 .line 1987
15505 :sswitch_3
15506 const-string v4, "thumbnails"
15507
15508 const-string v5, "image_id"
15509
15510 move-object v1, p0
15511
15512 move-object v3, p1
15513
15514 invoke-direct/range {v1 .. v6}, Lcom/android/providers/media/MediaProvider;->queryThumbnail(Landroid/database/sqlite/SQLiteQueryBuilder;Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Z)Z
15515
15516 move-result v1
15517
15518 if-nez v1, :cond_a
15519
15520 .line 1988
15521 const/4 v1, 0x0
15522
15523 goto/16 :goto_0
15524
15525 .line 1993
15526 :sswitch_4
15527 if-eqz p2, :cond_d
15528
15529 array-length v1, p2
15530
15531 const/4 v4, 0x1
15532
15533 if-ne v1, v4, :cond_d
15534
15535 if-nez p4, :cond_d
15536
15537 if-eqz p3, :cond_c
15538
15539 const-string v1, "is_music=1"
15540
15541 move-object/from16 v0, p3
15542
15543 invoke-virtual {v0, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
15544
15545 move-result v1
15546
15547 if-nez v1, :cond_c
15548
15549 const-string v1, "is_podcast=1"
15550
15551 move-object/from16 v0, p3
15552
15553 invoke-virtual {v0, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
15554
15555 move-result v1
15556
15557 if-eqz v1, :cond_d
15558
15559 :cond_c
15560 const/4 v1, 0x0
15561
15562 aget-object v1, p2, v1
15563
15564 const-string v4, "count(*)"
15565
15566 invoke-virtual {v1, v4}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
15567
15568 move-result v1
15569
15570 if-eqz v1, :cond_d
15571
15572 if-eqz v3, :cond_d
15573
15574 .line 1999
15575 const-string v1, "audio_meta"
15576
15577 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
15578
15579 goto/16 :goto_2
15580
15581 .line 2001
15582 :cond_d
15583 const-string v1, "audio"
15584
15585 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
15586
15587 .line 2002
15588 const/4 v1, 0x0
15589
15590 :goto_3
15591 if-eqz v3, :cond_a
15592
15593 array-length v4, v3
15594
15595 if-ge v1, v4, :cond_a
15596
15597 .line 2003
15598 if-lez v1, :cond_e
15599
15600 .line 2004
15601 const-string v4, " AND "
15602
15603 invoke-virtual {v2, v4}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
15604
15605 .line 2006
15606 :cond_e
15607 const-string v4, "artist_key||album_key||title_key LIKE ? ESCAPE \'\\\'"
15608
15609 invoke-virtual {v2, v4}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
15610
15611 .line 2009
15612 new-instance v4, Ljava/lang/StringBuilder;
15613
15614 invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
15615
15616 const-string v5, "%"
15617
15618 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15619
15620 move-result-object v4
15621
15622 aget-object v5, v3, v1
15623
15624 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15625
15626 move-result-object v4
15627
15628 const-string v5, "%"
15629
15630 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15631
15632 move-result-object v4
15633
15634 invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
15635
15636 move-result-object v4
15637
15638 invoke-interface {v8, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
15639
15640 .line 2002
15641 add-int/lit8 v1, v1, 0x1
15642
15643 goto :goto_3
15644
15645 .line 2015
15646 :sswitch_5
15647 const-string v1, "audio"
15648
15649 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
15650
15651 .line 2016
15652 const-string v1, "_id=?"
15653
15654 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
15655
15656 .line 2017
15657 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
15658
15659 move-result-object v1
15660
15661 const/4 v3, 0x3
15662
15663 invoke-interface {v1, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
15664
15665 move-result-object v1
15666
15667 invoke-interface {v8, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
15668
15669 goto/16 :goto_2
15670
15671 .line 2021
15672 :sswitch_6
15673 const-string v1, "audio_genres"
15674
15675 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
15676
15677 .line 2022
15678 const-string v1, "_id IN (SELECT genre_id FROM audio_genres_map WHERE audio_id=?)"
15679
15680 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
15681
15682 .line 2024
15683 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
15684
15685 move-result-object v1
15686
15687 const/4 v3, 0x3
15688
15689 invoke-interface {v1, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
15690
15691 move-result-object v1
15692
15693 invoke-interface {v8, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
15694
15695 goto/16 :goto_2
15696
15697 .line 2028
15698 :sswitch_7
15699 const-string v1, "audio_genres"
15700
15701 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
15702
15703 .line 2029
15704 const-string v1, "_id=?"
15705
15706 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
15707
15708 .line 2030
15709 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
15710
15711 move-result-object v1
15712
15713 const/4 v3, 0x5
15714
15715 invoke-interface {v1, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
15716
15717 move-result-object v1
15718
15719 invoke-interface {v8, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
15720
15721 goto/16 :goto_2
15722
15723 .line 2034
15724 :sswitch_8
15725 const-string v1, "audio_playlists"
15726
15727 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
15728
15729 .line 2035
15730 const-string v1, "_id IN (SELECT playlist_id FROM audio_playlists_map WHERE audio_id=?)"
15731
15732 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
15733
15734 .line 2037
15735 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
15736
15737 move-result-object v1
15738
15739 const/4 v3, 0x3
15740
15741 invoke-interface {v1, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
15742
15743 move-result-object v1
15744
15745 invoke-interface {v8, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
15746
15747 goto/16 :goto_2
15748
15749 .line 2041
15750 :sswitch_9
15751 const-string v1, "audio_playlists"
15752
15753 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
15754
15755 .line 2042
15756 const-string v1, "_id=?"
15757
15758 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
15759
15760 .line 2043
15761 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
15762
15763 move-result-object v1
15764
15765 const/4 v3, 0x5
15766
15767 invoke-interface {v1, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
15768
15769 move-result-object v1
15770
15771 invoke-interface {v8, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
15772
15773 goto/16 :goto_2
15774
15775 .line 2047
15776 :sswitch_a
15777 const-string v1, "audio_genres"
15778
15779 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
15780
15781 goto/16 :goto_2
15782
15783 .line 2051
15784 :sswitch_b
15785 const-string v1, "audio_genres"
15786
15787 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
15788
15789 .line 2052
15790 const-string v1, "_id=?"
15791
15792 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
15793
15794 .line 2053
15795 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
15796
15797 move-result-object v1
15798
15799 const/4 v3, 0x3
15800
15801 invoke-interface {v1, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
15802
15803 move-result-object v1
15804
15805 invoke-interface {v8, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
15806
15807 goto/16 :goto_2
15808
15809 .line 2062
15810 :sswitch_c
15811 if-nez v3, :cond_12
15812
15813 if-eqz p2, :cond_12
15814
15815 if-eqz p3, :cond_f
15816
15817 const-string v1, "genre_id=?"
15818
15819 move-object/from16 v0, p3
15820
15821 invoke-virtual {v0, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
15822
15823 move-result v1
15824
15825 if-eqz v1, :cond_12
15826
15827 :cond_f
15828 const/4 v4, 0x1
15829
15830 .line 2064
15831 :goto_4
15832 if-eqz p2, :cond_13
15833
15834 .line 2065
15835 const/4 v1, 0x0
15836
15837 :goto_5
15838 array-length v5, p2
15839
15840 if-ge v1, v5, :cond_13
15841
15842 .line 2066
15843 aget-object v5, p2, v1
15844
15845 .line 2067
15846 const-string v6, "_id"
15847
15848 invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
15849
15850 move-result v6
15851
15852 if-eqz v6, :cond_10
15853
15854 .line 2072
15855 const/4 v4, 0x0
15856
15857 .line 2074
15858 :cond_10
15859 if-eqz v4, :cond_11
15860
15861 const-string v6, "audio_id"
15862
15863 invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
15864
15865 move-result v6
15866
15867 if-nez v6, :cond_11
15868
15869 const-string v6, "genre_id"
15870
15871 invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
15872
15873 move-result v5
15874
15875 if-nez v5, :cond_11
15876
15877 .line 2076
15878 const/4 v4, 0x0
15879
15880 .line 2065
15881 :cond_11
15882 add-int/lit8 v1, v1, 0x1
15883
15884 goto :goto_5
15885
15886 .line 2062
15887 :cond_12
15888 const/4 v4, 0x0
15889
15890 goto :goto_4
15891
15892 .line 2080
15893 :cond_13
15894 if-eqz v4, :cond_14
15895
15896 .line 2081
15897 const-string v1, "audio_genres_map_noid"
15898
15899 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
15900
15901 .line 2082
15902 const/16 v1, 0x6c
15903
15904 if-ne v11, v1, :cond_a
15905
15906 .line 2083
15907 const-string v1, "genre_id=?"
15908
15909 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
15910
15911 .line 2084
15912 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
15913
15914 move-result-object v1
15915
15916 const/4 v3, 0x3
15917
15918 invoke-interface {v1, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
15919
15920 move-result-object v1
15921
15922 invoke-interface {v8, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
15923
15924 goto/16 :goto_2
15925
15926 .line 2087
15927 :cond_14
15928 const-string v1, "audio_genres_map_noid, audio"
15929
15930 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
15931
15932 .line 2088
15933 const-string v1, "audio._id = audio_id"
15934
15935 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
15936
15937 .line 2089
15938 const/16 v1, 0x6c
15939
15940 if-ne v11, v1, :cond_15
15941
15942 .line 2090
15943 const-string v1, " AND genre_id=?"
15944
15945 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
15946
15947 .line 2091
15948 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
15949
15950 move-result-object v1
15951
15952 const/4 v4, 0x3
15953
15954 invoke-interface {v1, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
15955
15956 move-result-object v1
15957
15958 invoke-interface {v8, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
15959
15960 .line 2093
15961 :cond_15
15962 const/4 v1, 0x0
15963
15964 :goto_6
15965 if-eqz v3, :cond_a
15966
15967 array-length v4, v3
15968
15969 if-ge v1, v4, :cond_a
15970
15971 .line 2094
15972 const-string v4, " AND "
15973
15974 invoke-virtual {v2, v4}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
15975
15976 .line 2095
15977 const-string v4, "artist_key||album_key||title_key LIKE ? ESCAPE \'\\\'"
15978
15979 invoke-virtual {v2, v4}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
15980
15981 .line 2099
15982 new-instance v4, Ljava/lang/StringBuilder;
15983
15984 invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
15985
15986 const-string v5, "%"
15987
15988 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15989
15990 move-result-object v4
15991
15992 aget-object v5, v3, v1
15993
15994 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15995
15996 move-result-object v4
15997
15998 const-string v5, "%"
15999
16000 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16001
16002 move-result-object v4
16003
16004 invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
16005
16006 move-result-object v4
16007
16008 invoke-interface {v8, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
16009
16010 .line 2093
16011 add-int/lit8 v1, v1, 0x1
16012
16013 goto :goto_6
16014
16015 .line 2106
16016 :sswitch_d
16017 const-string v1, "audio_playlists"
16018
16019 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
16020
16021 goto/16 :goto_2
16022
16023 .line 2110
16024 :sswitch_e
16025 const-string v1, "audio_playlists"
16026
16027 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
16028
16029 .line 2111
16030 const-string v1, "_id=?"
16031
16032 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
16033
16034 .line 2112
16035 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
16036
16037 move-result-object v1
16038
16039 const/4 v3, 0x3
16040
16041 invoke-interface {v1, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
16042
16043 move-result-object v1
16044
16045 invoke-interface {v8, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
16046
16047 goto/16 :goto_2
16048
16049 .line 2120
16050 :sswitch_f
16051 if-nez v3, :cond_19
16052
16053 if-eqz p2, :cond_19
16054
16055 if-eqz p3, :cond_16
16056
16057 const-string v1, "playlist_id=?"
16058
16059 move-object/from16 v0, p3
16060
16061 invoke-virtual {v0, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
16062
16063 move-result v1
16064
16065 if-eqz v1, :cond_19
16066
16067 :cond_16
16068 const/4 v4, 0x1
16069
16070 .line 2122
16071 :goto_7
16072 if-eqz p2, :cond_1a
16073
16074 .line 2123
16075 const/4 v1, 0x0
16076
16077 :goto_8
16078 array-length v5, p2
16079
16080 if-ge v1, v5, :cond_1a
16081
16082 .line 2124
16083 aget-object v5, p2, v1
16084
16085 .line 2125
16086 if-eqz v4, :cond_17
16087
16088 const-string v6, "audio_id"
16089
16090 invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
16091
16092 move-result v6
16093
16094 if-nez v6, :cond_17
16095
16096 const-string v6, "playlist_id"
16097
16098 invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
16099
16100 move-result v6
16101
16102 if-nez v6, :cond_17
16103
16104 const-string v6, "play_order"
16105
16106 invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
16107
16108 move-result v6
16109
16110 if-nez v6, :cond_17
16111
16112 .line 2127
16113 const/4 v4, 0x0
16114
16115 .line 2129
16116 :cond_17
16117 const-string v6, "_id"
16118
16119 invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
16120
16121 move-result v5
16122
16123 if-eqz v5, :cond_18
16124
16125 .line 2130
16126 const-string v5, "audio_playlists_map._id AS _id"
16127
16128 aput-object v5, p2, v1
16129
16130 .line 2123
16131 :cond_18
16132 add-int/lit8 v1, v1, 0x1
16133
16134 goto :goto_8
16135
16136 .line 2120
16137 :cond_19
16138 const/4 v4, 0x0
16139
16140 goto :goto_7
16141
16142 .line 2134
16143 :cond_1a
16144 if-eqz v4, :cond_1c
16145
16146 .line 2135
16147 const-string v1, "audio_playlists_map"
16148
16149 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
16150
16151 .line 2136
16152 const-string v1, "playlist_id=?"
16153
16154 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
16155
16156 .line 2137
16157 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
16158
16159 move-result-object v1
16160
16161 const/4 v3, 0x3
16162
16163 invoke-interface {v1, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
16164
16165 move-result-object v1
16166
16167 invoke-interface {v8, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
16168
16169 .line 2151
16170 :cond_1b
16171 const/16 v1, 0x71
16172
16173 if-ne v11, v1, :cond_a
16174
16175 .line 2152
16176 const-string v1, " AND audio_playlists_map._id=?"
16177
16178 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
16179
16180 .line 2153
16181 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
16182
16183 move-result-object v1
16184
16185 const/4 v3, 0x5
16186
16187 invoke-interface {v1, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
16188
16189 move-result-object v1
16190
16191 invoke-interface {v8, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
16192
16193 goto/16 :goto_2
16194
16195 .line 2139
16196 :cond_1c
16197 const-string v1, "audio_playlists_map, audio"
16198
16199 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
16200
16201 .line 2140
16202 const-string v1, "audio._id = audio_id AND playlist_id=?"
16203
16204 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
16205
16206 .line 2141
16207 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
16208
16209 move-result-object v1
16210
16211 const/4 v4, 0x3
16212
16213 invoke-interface {v1, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
16214
16215 move-result-object v1
16216
16217 invoke-interface {v8, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
16218
16219 .line 2142
16220 const/4 v1, 0x0
16221
16222 :goto_9
16223 if-eqz v3, :cond_1b
16224
16225 array-length v4, v3
16226
16227 if-ge v1, v4, :cond_1b
16228
16229 .line 2143
16230 const-string v4, " AND "
16231
16232 invoke-virtual {v2, v4}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
16233
16234 .line 2144
16235 const-string v4, "artist_key||album_key||title_key LIKE ? ESCAPE \'\\\'"
16236
16237 invoke-virtual {v2, v4}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
16238
16239 .line 2148
16240 new-instance v4, Ljava/lang/StringBuilder;
16241
16242 invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
16243
16244 const-string v5, "%"
16245
16246 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16247
16248 move-result-object v4
16249
16250 aget-object v5, v3, v1
16251
16252 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16253
16254 move-result-object v4
16255
16256 const-string v5, "%"
16257
16258 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16259
16260 move-result-object v4
16261
16262 invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
16263
16264 move-result-object v4
16265
16266 invoke-interface {v8, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
16267
16268 .line 2142
16269 add-int/lit8 v1, v1, 0x1
16270
16271 goto :goto_9
16272
16273 .line 2158
16274 :sswitch_10
16275 const-string v1, "video"
16276
16277 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
16278
16279 goto/16 :goto_2
16280
16281 .line 2161
16282 :sswitch_11
16283 const-string v1, "video"
16284
16285 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
16286
16287 .line 2162
16288 const-string v1, "_id=?"
16289
16290 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
16291
16292 .line 2163
16293 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
16294
16295 move-result-object v1
16296
16297 const/4 v3, 0x3
16298
16299 invoke-interface {v1, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
16300
16301 move-result-object v1
16302
16303 invoke-interface {v8, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
16304
16305 goto/16 :goto_2
16306
16307 .line 2167
16308 :sswitch_12
16309 const/4 v6, 0x1
16310
16311 .line 2169
16312 :sswitch_13
16313 const-string v4, "videothumbnails"
16314
16315 const-string v5, "video_id"
16316
16317 move-object v1, p0
16318
16319 move-object v3, p1
16320
16321 invoke-direct/range {v1 .. v6}, Lcom/android/providers/media/MediaProvider;->queryThumbnail(Landroid/database/sqlite/SQLiteQueryBuilder;Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Z)Z
16322
16323 move-result v1
16324
16325 if-nez v1, :cond_a
16326
16327 .line 2170
16328 const/4 v1, 0x0
16329
16330 goto/16 :goto_0
16331
16332 .line 2175
16333 :sswitch_14
16334 if-eqz p2, :cond_1e
16335
16336 array-length v1, p2
16337
16338 const/4 v4, 0x1
16339
16340 if-ne v1, v4, :cond_1e
16341
16342 if-nez p4, :cond_1e
16343
16344 if-eqz p3, :cond_1d
16345
16346 invoke-virtual/range {p3 .. p3}, Ljava/lang/String;->length()I
16347
16348 move-result v1
16349
16350 if-nez v1, :cond_1e
16351
16352 :cond_1d
16353 const/4 v1, 0x0
16354
16355 aget-object v1, p2, v1
16356
16357 const-string v4, "count(*)"
16358
16359 invoke-virtual {v1, v4}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
16360
16361 move-result v1
16362
16363 if-eqz v1, :cond_1e
16364
16365 if-eqz v3, :cond_1e
16366
16367 .line 2180
16368 const-string v1, "audio_meta"
16369
16370 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
16371
16372 .line 2181
16373 const/4 v1, 0x0
16374
16375 const-string v3, "count(distinct artist_id)"
16376
16377 aput-object v3, p2, v1
16378
16379 .line 2182
16380 const-string v1, "is_music=1"
16381
16382 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
16383
16384 goto/16 :goto_2
16385
16386 .line 2184
16387 :cond_1e
16388 const-string v1, "artist_info"
16389
16390 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
16391
16392 .line 2185
16393 const/4 v1, 0x0
16394
16395 :goto_a
16396 if-eqz v3, :cond_a
16397
16398 array-length v4, v3
16399
16400 if-ge v1, v4, :cond_a
16401
16402 .line 2186
16403 if-lez v1, :cond_1f
16404
16405 .line 2187
16406 const-string v4, " AND "
16407
16408 invoke-virtual {v2, v4}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
16409
16410 .line 2189
16411 :cond_1f
16412 const-string v4, "artist_key LIKE ? ESCAPE \'\\\'"
16413
16414 invoke-virtual {v2, v4}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
16415
16416 .line 2191
16417 new-instance v4, Ljava/lang/StringBuilder;
16418
16419 invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
16420
16421 const-string v5, "%"
16422
16423 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16424
16425 move-result-object v4
16426
16427 aget-object v5, v3, v1
16428
16429 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16430
16431 move-result-object v4
16432
16433 const-string v5, "%"
16434
16435 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16436
16437 move-result-object v4
16438
16439 invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
16440
16441 move-result-object v4
16442
16443 invoke-interface {v8, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
16444
16445 .line 2185
16446 add-int/lit8 v1, v1, 0x1
16447
16448 goto :goto_a
16449
16450 .line 2197
16451 :sswitch_15
16452 const-string v1, "artist_info"
16453
16454 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
16455
16456 .line 2198
16457 const-string v1, "_id=?"
16458
16459 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
16460
16461 .line 2199
16462 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
16463
16464 move-result-object v1
16465
16466 const/4 v3, 0x3
16467
16468 invoke-interface {v1, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
16469
16470 move-result-object v1
16471
16472 invoke-interface {v8, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
16473
16474 goto/16 :goto_2
16475
16476 .line 2203
16477 :sswitch_16
16478 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
16479
16480 move-result-object v1
16481
16482 const/4 v4, 0x3
16483
16484 invoke-interface {v1, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
16485
16486 move-result-object v1
16487
16488 check-cast v1, Ljava/lang/String;
16489
16490 .line 2204
16491 const-string v4, "audio LEFT OUTER JOIN album_art ON audio.album_id=album_art.album_id"
16492
16493 invoke-virtual {v2, v4}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
16494
16495 .line 2206
16496 const-string v4, "is_music=1 AND audio.album_id IN (SELECT album_id FROM artists_albums_map WHERE artist_id=?)"
16497
16498 invoke-virtual {v2, v4}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
16499
16500 .line 2208
16501 invoke-interface {v8, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
16502
16503 .line 2209
16504 const/4 v4, 0x0
16505
16506 :goto_b
16507 if-eqz v3, :cond_20
16508
16509 array-length v5, v3
16510
16511 if-ge v4, v5, :cond_20
16512
16513 .line 2210
16514 const-string v5, " AND "
16515
16516 invoke-virtual {v2, v5}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
16517
16518 .line 2211
16519 const-string v5, "artist_key||album_key LIKE ? ESCAPE \'\\\'"
16520
16521 invoke-virtual {v2, v5}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
16522
16523 .line 2214
16524 new-instance v5, Ljava/lang/StringBuilder;
16525
16526 invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
16527
16528 const-string v6, "%"
16529
16530 invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16531
16532 move-result-object v5
16533
16534 aget-object v6, v3, v4
16535
16536 invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16537
16538 move-result-object v5
16539
16540 const-string v6, "%"
16541
16542 invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16543
16544 move-result-object v5
16545
16546 invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
16547
16548 move-result-object v5
16549
16550 invoke-interface {v8, v5}, Ljava/util/List;->add(Ljava/lang/Object;)Z
16551
16552 .line 2209
16553 add-int/lit8 v4, v4, 0x1
16554
16555 goto :goto_b
16556
16557 .line 2216
16558 :cond_20
16559 const-string v7, "audio.album_id"
16560
16561 .line 2217
16562 sget-object v3, Lcom/android/providers/media/MediaProvider;->sArtistAlbumsMap:Ljava/util/HashMap;
16563
16564 const-string v4, "numsongs_by_artist"
16565
16566 new-instance v5, Ljava/lang/StringBuilder;
16567
16568 invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
16569
16570 const-string v6, "count(CASE WHEN artist_id=="
16571
16572 invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16573
16574 move-result-object v5
16575
16576 invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16577
16578 move-result-object v1
16579
16580 const-string v5, " THEN \'foo\' ELSE NULL END) AS "
16581
16582 invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16583
16584 move-result-object v1
16585
16586 const-string v5, "numsongs_by_artist"
16587
16588 invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16589
16590 move-result-object v1
16591
16592 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
16593
16594 move-result-object v1
16595
16596 invoke-virtual {v3, v4, v1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
16597
16598 .line 2220
16599 sget-object v1, Lcom/android/providers/media/MediaProvider;->sArtistAlbumsMap:Ljava/util/HashMap;
16600
16601 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setProjectionMap(Ljava/util/Map;)V
16602
16603 goto/16 :goto_2
16604
16605 .line 2224
16606 :sswitch_17
16607 if-eqz p2, :cond_22
16608
16609 array-length v1, p2
16610
16611 const/4 v4, 0x1
16612
16613 if-ne v1, v4, :cond_22
16614
16615 if-nez p4, :cond_22
16616
16617 if-eqz p3, :cond_21
16618
16619 invoke-virtual/range {p3 .. p3}, Ljava/lang/String;->length()I
16620
16621 move-result v1
16622
16623 if-nez v1, :cond_22
16624
16625 :cond_21
16626 const/4 v1, 0x0
16627
16628 aget-object v1, p2, v1
16629
16630 const-string v4, "count(*)"
16631
16632 invoke-virtual {v1, v4}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
16633
16634 move-result v1
16635
16636 if-eqz v1, :cond_22
16637
16638 if-eqz v3, :cond_22
16639
16640 .line 2229
16641 const-string v1, "audio_meta"
16642
16643 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
16644
16645 .line 2230
16646 const/4 v1, 0x0
16647
16648 const-string v3, "count(distinct album_id)"
16649
16650 aput-object v3, p2, v1
16651
16652 .line 2231
16653 const-string v1, "is_music=1"
16654
16655 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
16656
16657 goto/16 :goto_2
16658
16659 .line 2233
16660 :cond_22
16661 const-string v1, "album_info"
16662
16663 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
16664
16665 .line 2234
16666 const/4 v1, 0x0
16667
16668 :goto_c
16669 if-eqz v3, :cond_a
16670
16671 array-length v4, v3
16672
16673 if-ge v1, v4, :cond_a
16674
16675 .line 2235
16676 if-lez v1, :cond_23
16677
16678 .line 2236
16679 const-string v4, " AND "
16680
16681 invoke-virtual {v2, v4}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
16682
16683 .line 2238
16684 :cond_23
16685 const-string v4, "artist_key||album_key LIKE ? ESCAPE \'\\\'"
16686
16687 invoke-virtual {v2, v4}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
16688
16689 .line 2241
16690 new-instance v4, Ljava/lang/StringBuilder;
16691
16692 invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
16693
16694 const-string v5, "%"
16695
16696 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16697
16698 move-result-object v4
16699
16700 aget-object v5, v3, v1
16701
16702 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16703
16704 move-result-object v4
16705
16706 const-string v5, "%"
16707
16708 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16709
16710 move-result-object v4
16711
16712 invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
16713
16714 move-result-object v4
16715
16716 invoke-interface {v8, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
16717
16718 .line 2234
16719 add-int/lit8 v1, v1, 0x1
16720
16721 goto :goto_c
16722
16723 .line 2247
16724 :sswitch_18
16725 const-string v1, "album_info"
16726
16727 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
16728
16729 .line 2248
16730 const-string v1, "_id=?"
16731
16732 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
16733
16734 .line 2249
16735 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
16736
16737 move-result-object v1
16738
16739 const/4 v3, 0x3
16740
16741 invoke-interface {v1, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
16742
16743 move-result-object v1
16744
16745 invoke-interface {v8, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
16746
16747 goto/16 :goto_2
16748
16749 .line 2253
16750 :sswitch_19
16751 const-string v1, "album_art"
16752
16753 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
16754
16755 .line 2254
16756 const-string v1, "album_id=?"
16757
16758 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
16759
16760 .line 2255
16761 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
16762
16763 move-result-object v1
16764
16765 const/4 v3, 0x3
16766
16767 invoke-interface {v1, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
16768
16769 move-result-object v1
16770
16771 invoke-interface {v8, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
16772
16773 goto/16 :goto_2
16774
16775 .line 2259
16776 :sswitch_1a
16777 sget-object v1, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
16778
16779 const-string v3, "Legacy media search Uri used. Please update your code."
16780
16781 invoke-static {v1, v3}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
16782
16783 .line 2263
16784 :sswitch_1b
16785 move-object/from16 v0, p4
16786
16787 invoke-direct {p0, v8, v0}, Lcom/android/providers/media/MediaProvider;->combine(Ljava/util/List;[Ljava/lang/String;)[Ljava/lang/String;
16788
16789 move-result-object v9
16790
16791 move-object v3, p0
16792
16793 move-object v4, v10
16794
16795 move-object v5, v2
16796
16797 move-object v6, p1
16798
16799 move-object v7, p2
16800
16801 move-object/from16 v8, p3
16802
16803 move-object/from16 v10, p5
16804
16805 invoke-direct/range {v3 .. v12}, Lcom/android/providers/media/MediaProvider;->doAudioSearch(Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteQueryBuilder;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/database/Cursor;
16806
16807 move-result-object v1
16808
16809 goto/16 :goto_0
16810
16811 .line 2268
16812 :sswitch_1c
16813 const-string v1, "_id=?"
16814
16815 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
16816
16817 .line 2269
16818 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
16819
16820 move-result-object v1
16821
16822 const/4 v3, 0x2
16823
16824 invoke-interface {v1, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
16825
16826 move-result-object v1
16827
16828 invoke-interface {v8, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
16829
16830 .line 2273
16831 :sswitch_1d
16832 const-string v1, "files"
16833
16834 invoke-virtual {v2, v1}, Landroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
16835
16836 goto/16 :goto_2
16837
16838 .line 2277
16839 :sswitch_1e
16840 invoke-virtual {p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
16841
16842 move-result-object v1
16843
16844 const/4 v2, 0x2
16845
16846 invoke-interface {v1, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
16847
16848 move-result-object v1
16849
16850 check-cast v1, Ljava/lang/String;
16851
16852 invoke-static {v1}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
16853
16854 move-result v1
16855
16856 .line 2278
16857 invoke-direct {p0, v10, v1}, Lcom/android/providers/media/MediaProvider;->getObjectReferences(Landroid/database/sqlite/SQLiteDatabase;I)Landroid/database/Cursor;
16858
16859 move-result-object v1
16860
16861 goto/16 :goto_0
16862
16863 .line 1963
16864 nop
16865
16866 :sswitch_data_0
16867 .sparse-switch
16868 0x1 -> :sswitch_0
16869 0x2 -> :sswitch_1
16870 0x3 -> :sswitch_3
16871 0x4 -> :sswitch_2
16872 0x64 -> :sswitch_4
16873 0x65 -> :sswitch_5
16874 0x66 -> :sswitch_6
16875 0x67 -> :sswitch_7
16876 0x68 -> :sswitch_8
16877 0x69 -> :sswitch_9
16878 0x6a -> :sswitch_a
16879 0x6b -> :sswitch_b
16880 0x6c -> :sswitch_c
16881 0x6d -> :sswitch_c
16882 0x6e -> :sswitch_d
16883 0x6f -> :sswitch_e
16884 0x70 -> :sswitch_f
16885 0x71 -> :sswitch_f
16886 0x72 -> :sswitch_14
16887 0x73 -> :sswitch_15
16888 0x74 -> :sswitch_17
16889 0x75 -> :sswitch_18
16890 0x76 -> :sswitch_16
16891 0x78 -> :sswitch_19
16892 0xc8 -> :sswitch_10
16893 0xc9 -> :sswitch_11
16894 0xca -> :sswitch_13
16895 0xcb -> :sswitch_12
16896 0x190 -> :sswitch_1a
16897 0x191 -> :sswitch_1b
16898 0x192 -> :sswitch_1b
16899 0x2bc -> :sswitch_1d
16900 0x2bd -> :sswitch_1c
16901 0x2be -> :sswitch_1d
16902 0x2bf -> :sswitch_1c
16903 0x2c0 -> :sswitch_1e
16904 .end sparse-switch
16905.end method
16906
16907.method public update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
16908 .locals 27
16909 .parameter
16910 .parameter
16911 .parameter
16912 .parameter
16913
16914 .prologue
16915 .line 3618
16916 sget-object v4, Lcom/android/providers/media/MediaProvider;->URI_MATCHER:Landroid/content/UriMatcher;
16917
16918 move-object/from16 v0, p1
16919
16920 invoke-virtual {v4, v0}, Landroid/content/UriMatcher;->match(Landroid/net/Uri;)I
16921
16922 move-result v24
16923
16924 .line 3619
16925 invoke-direct/range {p0 .. p1}, Lcom/android/providers/media/MediaProvider;->getDatabaseForUri(Landroid/net/Uri;)Lcom/android/providers/media/MediaProvider$DatabaseHelper;
16926
16927 move-result-object v17
16928
16929 .line 3620
16930 if-nez v17, :cond_0
16931
16932 .line 3621
16933 new-instance v4, Ljava/lang/UnsupportedOperationException;
16934
16935 new-instance v5, Ljava/lang/StringBuilder;
16936
16937 invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
16938
16939 const-string v6, "Unknown URI: "
16940
16941 invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16942
16943 move-result-object v5
16944
16945 move-object/from16 v0, p1
16946
16947 invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
16948
16949 move-result-object v5
16950
16951 invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
16952
16953 move-result-object v5
16954
16955 invoke-direct {v4, v5}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
16956
16957 throw v4
16958
16959 .line 3624
16960 :cond_0
16961 invoke-virtual/range {v17 .. v17}, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->getWritableDatabase()Landroid/database/sqlite/SQLiteDatabase;
16962
16963 move-result-object v4
16964
16965 .line 3626
16966 const/4 v5, 0x0
16967
16968 .line 3627
16969 if-eqz p2, :cond_1c
16970
16971 .line 3628
16972 const-string v5, "genre"
16973
16974 move-object/from16 v0, p2
16975
16976 invoke-virtual {v0, v5}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
16977
16978 move-result-object v5
16979
16980 .line 3629
16981 const-string v6, "genre"
16982
16983 move-object/from16 v0, p2
16984
16985 invoke-virtual {v0, v6}, Landroid/content/ContentValues;->remove(Ljava/lang/String;)V
16986
16987 move-object/from16 v23, v5
16988
16989 .line 3632
16990 :goto_0
16991 sget-object v25, Lcom/android/providers/media/MediaProvider;->sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
16992
16993 monitor-enter v25
16994
16995 .line 3633
16996 :try_start_0
16997 sget-object v5, Lcom/android/providers/media/MediaProvider;->sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
16998
16999 move-object/from16 v0, p0
17000
17001 move-object/from16 v1, p1
17002
17003 move/from16 v2, v24
17004
17005 move-object/from16 v3, p3
17006
17007 invoke-direct {v0, v1, v2, v3, v5}, Lcom/android/providers/media/MediaProvider;->getTableAndWhere(Landroid/net/Uri;ILjava/lang/String;Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;)V
17008
17009 .line 3638
17010 const/16 v5, 0x2be
17011
17012 move/from16 v0, v24
17013
17014 if-eq v0, v5, :cond_1
17015
17016 const/16 v5, 0x2bf
17017
17018 move/from16 v0, v24
17019
17020 if-ne v0, v5, :cond_6
17021
17022 :cond_1
17023 if-eqz p2, :cond_6
17024
17025 invoke-virtual/range {p2 .. p2}, Landroid/content/ContentValues;->size()I
17026
17027 move-result v5
17028
17029 const/4 v6, 0x1
17030
17031 if-ne v5, v6, :cond_6
17032
17033 .line 3640
17034 const/4 v12, 0x0
17035
17036 .line 3641
17037 const-string v5, "_data"
17038
17039 move-object/from16 v0, p2
17040
17041 invoke-virtual {v0, v5}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
17042
17043 move-result-object v13
17044
17045 .line 3642
17046 move-object/from16 v0, p0
17047
17048 iget-object v5, v0, Lcom/android/providers/media/MediaProvider;->mDirectoryCache:Ljava/util/HashMap;
17049
17050 invoke-virtual {v5, v13}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
17051
17052 .line 3644
17053 if-eqz v13, :cond_6
17054
17055 new-instance v5, Ljava/io/File;
17056
17057 invoke-direct {v5, v13}, Ljava/io/File;-><init>(Ljava/lang/String;)V
17058
17059 invoke-virtual {v5}, Ljava/io/File;->isDirectory()Z
17060
17061 move-result v5
17062
17063 if-eqz v5, :cond_6
17064
17065 .line 3645
17066 sget-object v5, Lcom/android/providers/media/MediaProvider;->sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
17067
17068 iget-object v5, v5, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
17069
17070 sget-object v6, Lcom/android/providers/media/MediaProvider;->PATH_PROJECTION:[Ljava/lang/String;
17071
17072 const/4 v9, 0x0
17073
17074 const/4 v10, 0x0
17075
17076 const/4 v11, 0x0
17077
17078 move-object/from16 v7, p3
17079
17080 move-object/from16 v8, p4
17081
17082 invoke-virtual/range {v4 .. v11}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
17083 :try_end_0
17084 .catchall {:try_start_0 .. :try_end_0} :catchall_1
17085
17086 move-result-object v7
17087
17088 .line 3648
17089 if-eqz v7, :cond_1b
17090
17091 :try_start_1
17092 invoke-interface {v7}, Landroid/database/Cursor;->moveToNext()Z
17093
17094 move-result v5
17095
17096 if-eqz v5, :cond_1b
17097
17098 .line 3649
17099 const/4 v5, 0x1
17100
17101 invoke-interface {v7, v5}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
17102 :try_end_1
17103 .catchall {:try_start_1 .. :try_end_1} :catchall_0
17104
17105 move-result-object v5
17106
17107 move-object v6, v5
17108
17109 .line 3652
17110 :goto_1
17111 if-eqz v7, :cond_2
17112
17113 :try_start_2
17114 invoke-interface {v7}, Landroid/database/Cursor;->close()V
17115
17116 .line 3654
17117 :cond_2
17118 if-eqz v6, :cond_6
17119
17120 .line 3655
17121 move-object/from16 v0, p0
17122
17123 iget-object v5, v0, Lcom/android/providers/media/MediaProvider;->mDirectoryCache:Ljava/util/HashMap;
17124
17125 invoke-virtual {v5, v6}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
17126
17127 .line 3657
17128 sget-object v5, Lcom/android/providers/media/MediaProvider;->sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
17129
17130 iget-object v5, v5, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
17131
17132 sget-object v7, Lcom/android/providers/media/MediaProvider;->sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
17133
17134 iget-object v7, v7, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->where:Ljava/lang/String;
17135
17136 move-object/from16 v0, p2
17137
17138 move-object/from16 v1, p4
17139
17140 invoke-virtual {v4, v5, v0, v7, v1}, Landroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
17141
17142 move-result v5
17143
17144 .line 3659
17145 if-lez v5, :cond_3
17146
17147 .line 3661
17148 const/4 v7, 0x2
17149
17150 new-array v7, v7, [Ljava/lang/Object;
17151
17152 const/4 v8, 0x0
17153
17154 new-instance v9, Ljava/lang/StringBuilder;
17155
17156 invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
17157
17158 invoke-virtual {v9, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17159
17160 move-result-object v6
17161
17162 const-string v9, "/"
17163
17164 invoke-virtual {v6, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17165
17166 move-result-object v6
17167
17168 invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
17169
17170 move-result-object v6
17171
17172 aput-object v6, v7, v8
17173
17174 const/4 v6, 0x1
17175
17176 new-instance v8, Ljava/lang/StringBuilder;
17177
17178 invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
17179
17180 invoke-virtual {v8, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17181
17182 move-result-object v8
17183
17184 const-string v9, "/"
17185
17186 invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17187
17188 move-result-object v8
17189
17190 invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
17191
17192 move-result-object v8
17193
17194 aput-object v8, v7, v6
17195
17196 .line 3662
17197 const-string v6, "UPDATE files SET _data=REPLACE(_data, ?1, ?2);"
17198
17199 invoke-virtual {v4, v6, v7}, Landroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;[Ljava/lang/Object;)V
17200
17201 .line 3665
17202 :cond_3
17203 if-lez v5, :cond_4
17204
17205 invoke-virtual {v4}, Landroid/database/sqlite/SQLiteDatabase;->inTransaction()Z
17206
17207 move-result v4
17208
17209 if-nez v4, :cond_4
17210
17211 .line 3666
17212 invoke-virtual/range {p0 .. p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
17213
17214 move-result-object v4
17215
17216 invoke-virtual {v4}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
17217
17218 move-result-object v4
17219
17220 const/4 v6, 0x0
17221
17222 move-object/from16 v0, p1
17223
17224 invoke-virtual {v4, v0, v6}, Landroid/content/ContentResolver;->notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;)V
17225
17226 .line 3668
17227 :cond_4
17228 monitor-exit v25
17229
17230 move v4, v5
17231
17232 .line 3853
17233 :goto_2
17234 return v4
17235
17236 .line 3652
17237 :catchall_0
17238 move-exception v4
17239
17240 if-eqz v7, :cond_5
17241
17242 invoke-interface {v7}, Landroid/database/Cursor;->close()V
17243
17244 :cond_5
17245 throw v4
17246
17247 .line 3847
17248 :catchall_1
17249 move-exception v4
17250
17251 monitor-exit v25
17252 :try_end_2
17253 .catchall {:try_start_2 .. :try_end_2} :catchall_1
17254
17255 throw v4
17256
17257 .line 3673
17258 :cond_6
17259 sparse-switch v24, :sswitch_data_0
17260
17261 .line 3843
17262 :cond_7
17263 :try_start_3
17264 sget-object v5, Lcom/android/providers/media/MediaProvider;->sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
17265
17266 iget-object v5, v5, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
17267
17268 sget-object v6, Lcom/android/providers/media/MediaProvider;->sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
17269
17270 iget-object v6, v6, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->where:Ljava/lang/String;
17271
17272 move-object/from16 v0, p2
17273
17274 move-object/from16 v1, p4
17275
17276 invoke-virtual {v4, v5, v0, v6, v1}, Landroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
17277
17278 move-result v5
17279
17280 .line 3847
17281 :goto_3
17282 monitor-exit v25
17283 :try_end_3
17284 .catchall {:try_start_3 .. :try_end_3} :catchall_1
17285
17286 .line 3850
17287 if-lez v5, :cond_8
17288
17289 invoke-virtual {v4}, Landroid/database/sqlite/SQLiteDatabase;->inTransaction()Z
17290
17291 move-result v4
17292
17293 if-nez v4, :cond_8
17294
17295 .line 3851
17296 invoke-virtual/range {p0 .. p0}, Lcom/android/providers/media/MediaProvider;->getContext()Landroid/content/Context;
17297
17298 move-result-object v4
17299
17300 invoke-virtual {v4}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
17301
17302 move-result-object v4
17303
17304 const/4 v6, 0x0
17305
17306 move-object/from16 v0, p1
17307
17308 invoke-virtual {v4, v0, v6}, Landroid/content/ContentResolver;->notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;)V
17309
17310 :cond_8
17311 move v4, v5
17312
17313 .line 3853
17314 goto :goto_2
17315
17316 .line 3677
17317 :sswitch_0
17318 :try_start_4
17319 new-instance v26, Landroid/content/ContentValues;
17320
17321 move-object/from16 v0, v26
17322
17323 move-object/from16 v1, p2
17324
17325 invoke-direct {v0, v1}, Landroid/content/ContentValues;-><init>(Landroid/content/ContentValues;)V
17326
17327 .line 3678
17328 const-string v5, "album_artist"
17329
17330 move-object/from16 v0, v26
17331
17332 invoke-virtual {v0, v5}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
17333
17334 move-result-object v20
17335
17336 .line 3679
17337 const-string v5, "compilation"
17338
17339 move-object/from16 v0, v26
17340
17341 invoke-virtual {v0, v5}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
17342
17343 move-result-object v21
17344
17345 .line 3680
17346 const-string v5, "compilation"
17347
17348 move-object/from16 v0, v26
17349
17350 invoke-virtual {v0, v5}, Landroid/content/ContentValues;->remove(Ljava/lang/String;)V
17351
17352 .line 3684
17353 const-string v5, "artist"
17354
17355 move-object/from16 v0, v26
17356
17357 invoke-virtual {v0, v5}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
17358
17359 move-result-object v10
17360
17361 .line 3685
17362 const-string v5, "artist"
17363
17364 move-object/from16 v0, v26
17365
17366 invoke-virtual {v0, v5}, Landroid/content/ContentValues;->remove(Ljava/lang/String;)V
17367
17368 .line 3686
17369 if-eqz v10, :cond_9
17370
17371 .line 3688
17372 move-object/from16 v0, v17
17373
17374 iget-object v15, v0, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->mArtistCache:Ljava/util/HashMap;
17375
17376 .line 3689
17377 monitor-enter v15
17378 :try_end_4
17379 .catchall {:try_start_4 .. :try_end_4} :catchall_1
17380
17381 .line 3690
17382 :try_start_5
17383 invoke-virtual {v15, v10}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
17384
17385 move-result-object v5
17386
17387 check-cast v5, Ljava/lang/Long;
17388
17389 .line 3691
17390 if-nez v5, :cond_e
17391
17392 .line 3692
17393 const-string v7, "artists"
17394
17395 const-string v8, "artist_key"
17396
17397 const-string v9, "artist"
17398
17399 const/4 v12, 0x0
17400
17401 const/4 v13, 0x0
17402
17403 const/4 v14, 0x0
17404
17405 move-object/from16 v5, p0
17406
17407 move-object v6, v4
17408
17409 move-object v11, v10
17410
17411 move-object/from16 v16, p1
17412
17413 invoke-direct/range {v5 .. v16}, Lcom/android/providers/media/MediaProvider;->getKeyIdForName(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/util/HashMap;Landroid/net/Uri;)J
17414
17415 move-result-wide v5
17416
17417 .line 3697
17418 :goto_4
17419 monitor-exit v15
17420 :try_end_5
17421 .catchall {:try_start_5 .. :try_end_5} :catchall_2
17422
17423 .line 3698
17424 :try_start_6
17425 const-string v7, "artist_id"
17426
17427 long-to-int v5, v5
17428
17429 invoke-static {v5}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
17430
17431 move-result-object v5
17432
17433 move-object/from16 v0, v26
17434
17435 invoke-virtual {v0, v7, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
17436
17437 .line 3702
17438 :cond_9
17439 const-string v5, "album"
17440
17441 move-object/from16 v0, v26
17442
17443 invoke-virtual {v0, v5}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
17444
17445 move-result-object v5
17446
17447 .line 3703
17448 const-string v6, "album"
17449
17450 move-object/from16 v0, v26
17451
17452 invoke-virtual {v0, v6}, Landroid/content/ContentValues;->remove(Ljava/lang/String;)V
17453
17454 .line 3704
17455 if-eqz v5, :cond_b
17456
17457 .line 3705
17458 const-string v6, "_data"
17459
17460 move-object/from16 v0, v26
17461
17462 invoke-virtual {v0, v6}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
17463
17464 move-result-object v18
17465
17466 .line 3706
17467 const/16 v19, 0x0
17468
17469 .line 3707
17470 if-eqz v20, :cond_f
17471
17472 .line 3708
17473 invoke-virtual/range {v20 .. v20}, Ljava/lang/String;->hashCode()I
17474
17475 move-result v19
17476
17477 .line 3741
17478 :cond_a
17479 :goto_5
17480 invoke-virtual {v5}, Ljava/lang/String;->toString()Ljava/lang/String;
17481
17482 move-result-object v16
17483
17484 .line 3743
17485 move-object/from16 v0, v17
17486
17487 iget-object v0, v0, Lcom/android/providers/media/MediaProvider$DatabaseHelper;->mAlbumCache:Ljava/util/HashMap;
17488
17489 move-object/from16 v21, v0
17490
17491 .line 3744
17492 monitor-enter v21
17493 :try_end_6
17494 .catchall {:try_start_6 .. :try_end_6} :catchall_1
17495
17496 .line 3745
17497 :try_start_7
17498 new-instance v5, Ljava/lang/StringBuilder;
17499
17500 invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
17501
17502 move-object/from16 v0, v16
17503
17504 invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17505
17506 move-result-object v5
17507
17508 move/from16 v0, v19
17509
17510 invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
17511
17512 move-result-object v5
17513
17514 invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
17515
17516 move-result-object v17
17517
17518 .line 3746
17519 move-object/from16 v0, v21
17520
17521 move-object/from16 v1, v17
17522
17523 invoke-virtual {v0, v1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
17524
17525 move-result-object v5
17526
17527 check-cast v5, Ljava/lang/Long;
17528
17529 .line 3747
17530 if-nez v5, :cond_14
17531
17532 .line 3748
17533 const-string v13, "albums"
17534
17535 const-string v14, "album_key"
17536
17537 const-string v15, "album"
17538
17539 move-object/from16 v11, p0
17540
17541 move-object v12, v4
17542
17543 move-object/from16 v20, v10
17544
17545 move-object/from16 v22, p1
17546
17547 invoke-direct/range {v11 .. v22}, Lcom/android/providers/media/MediaProvider;->getKeyIdForName(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/util/HashMap;Landroid/net/Uri;)J
17548
17549 move-result-wide v5
17550
17551 .line 3753
17552 :goto_6
17553 monitor-exit v21
17554 :try_end_7
17555 .catchall {:try_start_7 .. :try_end_7} :catchall_4
17556
17557 .line 3754
17558 :try_start_8
17559 const-string v7, "album_id"
17560
17561 long-to-int v5, v5
17562
17563 invoke-static {v5}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
17564
17565 move-result-object v5
17566
17567 move-object/from16 v0, v26
17568
17569 invoke-virtual {v0, v7, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
17570
17571 .line 3758
17572 :cond_b
17573 const-string v5, "title_key"
17574
17575 move-object/from16 v0, v26
17576
17577 invoke-virtual {v0, v5}, Landroid/content/ContentValues;->remove(Ljava/lang/String;)V
17578
17579 .line 3760
17580 const-string v5, "title"
17581
17582 move-object/from16 v0, v26
17583
17584 invoke-virtual {v0, v5}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
17585
17586 move-result-object v5
17587
17588 .line 3761
17589 if-eqz v5, :cond_c
17590
17591 .line 3762
17592 invoke-virtual {v5}, Ljava/lang/String;->toString()Ljava/lang/String;
17593
17594 move-result-object v5
17595
17596 .line 3763
17597 const-string v6, "title_key"
17598
17599 invoke-static {v5}, Landroid/provider/MediaStore$Audio;->keyFor(Ljava/lang/String;)Ljava/lang/String;
17600
17601 move-result-object v7
17602
17603 move-object/from16 v0, v26
17604
17605 invoke-virtual {v0, v6, v7}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
17606
17607 .line 3766
17608 const-string v6, "title"
17609
17610 move-object/from16 v0, v26
17611
17612 invoke-virtual {v0, v6}, Landroid/content/ContentValues;->remove(Ljava/lang/String;)V
17613
17614 .line 3767
17615 const-string v6, "title"
17616
17617 invoke-virtual {v5}, Ljava/lang/String;->trim()Ljava/lang/String;
17618
17619 move-result-object v5
17620
17621 move-object/from16 v0, v26
17622
17623 invoke-virtual {v0, v6, v5}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
17624
17625 .line 3770
17626 :cond_c
17627 sget-object v5, Lcom/android/providers/media/MediaProvider;->sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
17628
17629 iget-object v5, v5, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
17630
17631 sget-object v6, Lcom/android/providers/media/MediaProvider;->sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
17632
17633 iget-object v6, v6, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->where:Ljava/lang/String;
17634
17635 move-object/from16 v0, v26
17636
17637 move-object/from16 v1, p4
17638
17639 invoke-virtual {v4, v5, v0, v6, v1}, Landroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
17640
17641 move-result v6
17642
17643 .line 3772
17644 if-eqz v23, :cond_d
17645
17646 .line 3773
17647 const/4 v5, 0x1
17648
17649 if-ne v6, v5, :cond_15
17650
17651 const/16 v5, 0x65
17652
17653 move/from16 v0, v24
17654
17655 if-ne v0, v5, :cond_15
17656
17657 .line 3774
17658 invoke-virtual/range {p1 .. p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
17659
17660 move-result-object v5
17661
17662 const/4 v7, 0x3
17663
17664 invoke-interface {v5, v7}, Ljava/util/List;->get(I)Ljava/lang/Object;
17665
17666 move-result-object v5
17667
17668 check-cast v5, Ljava/lang/String;
17669
17670 invoke-static {v5}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
17671
17672 move-result-wide v7
17673
17674 .line 3775
17675 move-object/from16 v0, p0
17676
17677 move-object/from16 v1, v23
17678
17679 invoke-direct {v0, v7, v8, v1}, Lcom/android/providers/media/MediaProvider;->updateGenre(JLjava/lang/String;)V
17680 :try_end_8
17681 .catchall {:try_start_8 .. :try_end_8} :catchall_1
17682
17683 :cond_d
17684 :goto_7
17685 move v5, v6
17686
17687 .line 3783
17688 goto/16 :goto_3
17689
17690 .line 3695
17691 :cond_e
17692 :try_start_9
17693 invoke-virtual {v5}, Ljava/lang/Long;->longValue()J
17694
17695 move-result-wide v5
17696
17697 goto/16 :goto_4
17698
17699 .line 3697
17700 :catchall_2
17701 move-exception v4
17702
17703 monitor-exit v15
17704 :try_end_9
17705 .catchall {:try_start_9 .. :try_end_9} :catchall_2
17706
17707 :try_start_a
17708 throw v4
17709
17710 .line 3709
17711 :cond_f
17712 if-eqz v21, :cond_10
17713
17714 const-string v6, "1"
17715
17716 move-object/from16 v0, v21
17717
17718 invoke-virtual {v0, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
17719
17720 move-result v6
17721
17722 if-nez v6, :cond_a
17723
17724 .line 3712
17725 :cond_10
17726 if-nez v18, :cond_11
17727
17728 .line 3713
17729 const/16 v6, 0x64
17730
17731 move/from16 v0, v24
17732
17733 if-ne v0, v6, :cond_12
17734
17735 .line 3714
17736 sget-object v6, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
17737
17738 const-string v7, "Possible multi row album name update without path could give wrong album key"
17739
17740 invoke-static {v6, v7}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
17741
17742 .line 3736
17743 :cond_11
17744 :goto_8
17745 if-eqz v18, :cond_a
17746
17747 .line 3737
17748 const/4 v6, 0x0
17749
17750 const/16 v7, 0x2f
17751
17752 move-object/from16 v0, v18
17753
17754 invoke-virtual {v0, v7}, Ljava/lang/String;->lastIndexOf(I)I
17755
17756 move-result v7
17757
17758 move-object/from16 v0, v18
17759
17760 invoke-virtual {v0, v6, v7}, Ljava/lang/String;->substring(II)Ljava/lang/String;
17761
17762 move-result-object v6
17763
17764 invoke-virtual {v6}, Ljava/lang/String;->hashCode()I
17765
17766 move-result v19
17767
17768 goto/16 :goto_5
17769
17770 .line 3718
17771 :cond_12
17772 const/4 v6, 0x1
17773
17774 new-array v13, v6, [Ljava/lang/String;
17775
17776 const/4 v6, 0x0
17777
17778 const-string v7, "_data"
17779
17780 aput-object v7, v13, v6
17781
17782 const/4 v14, 0x0
17783
17784 const/4 v15, 0x0
17785
17786 const/16 v16, 0x0
17787
17788 move-object/from16 v11, p0
17789
17790 move-object/from16 v12, p1
17791
17792 invoke-virtual/range {v11 .. v16}, Lcom/android/providers/media/MediaProvider;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
17793 :try_end_a
17794 .catchall {:try_start_a .. :try_end_a} :catchall_1
17795
17796 move-result-object v6
17797
17798 .line 3721
17799 if-eqz v6, :cond_11
17800
17801 .line 3723
17802 :try_start_b
17803 invoke-interface {v6}, Landroid/database/Cursor;->getCount()I
17804
17805 move-result v7
17806
17807 .line 3724
17808 const/4 v8, 0x1
17809
17810 if-ne v7, v8, :cond_13
17811
17812 .line 3725
17813 invoke-interface {v6}, Landroid/database/Cursor;->moveToFirst()Z
17814
17815 .line 3726
17816 const/4 v7, 0x0
17817
17818 invoke-interface {v6, v7}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
17819 :try_end_b
17820 .catchall {:try_start_b .. :try_end_b} :catchall_3
17821
17822 move-result-object v18
17823
17824 .line 3731
17825 :goto_9
17826 :try_start_c
17827 invoke-interface {v6}, Landroid/database/Cursor;->close()V
17828 :try_end_c
17829 .catchall {:try_start_c .. :try_end_c} :catchall_1
17830
17831 goto :goto_8
17832
17833 .line 3728
17834 :cond_13
17835 :try_start_d
17836 sget-object v8, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
17837
17838 new-instance v9, Ljava/lang/StringBuilder;
17839
17840 invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
17841
17842 const-string v11, ""
17843
17844 invoke-virtual {v9, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17845
17846 move-result-object v9
17847
17848 invoke-virtual {v9, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
17849
17850 move-result-object v7
17851
17852 const-string v9, " rows for "
17853
17854 invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17855
17856 move-result-object v7
17857
17858 move-object/from16 v0, p1
17859
17860 invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
17861
17862 move-result-object v7
17863
17864 invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
17865
17866 move-result-object v7
17867
17868 invoke-static {v8, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
17869 :try_end_d
17870 .catchall {:try_start_d .. :try_end_d} :catchall_3
17871
17872 goto :goto_9
17873
17874 .line 3731
17875 :catchall_3
17876 move-exception v4
17877
17878 :try_start_e
17879 invoke-interface {v6}, Landroid/database/Cursor;->close()V
17880
17881 throw v4
17882 :try_end_e
17883 .catchall {:try_start_e .. :try_end_e} :catchall_1
17884
17885 .line 3751
17886 :cond_14
17887 :try_start_f
17888 invoke-virtual {v5}, Ljava/lang/Long;->longValue()J
17889
17890 move-result-wide v5
17891
17892 goto/16 :goto_6
17893
17894 .line 3753
17895 :catchall_4
17896 move-exception v4
17897
17898 monitor-exit v21
17899 :try_end_f
17900 .catchall {:try_start_f .. :try_end_f} :catchall_4
17901
17902 :try_start_10
17903 throw v4
17904
17905 .line 3778
17906 :cond_15
17907 sget-object v5, Lcom/android/providers/media/MediaProvider;->TAG:Ljava/lang/String;
17908
17909 new-instance v7, Ljava/lang/StringBuilder;
17910
17911 invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
17912
17913 const-string v8, "ignoring genre in update: count = "
17914
17915 invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17916
17917 move-result-object v7
17918
17919 invoke-virtual {v7, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
17920
17921 move-result-object v7
17922
17923 const-string v8, " match = "
17924
17925 invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17926
17927 move-result-object v7
17928
17929 move/from16 v0, v24
17930
17931 invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
17932
17933 move-result-object v7
17934
17935 invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
17936
17937 move-result-object v7
17938
17939 invoke-static {v5, v7}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
17940
17941 goto/16 :goto_7
17942
17943 .line 3789
17944 :sswitch_1
17945 new-instance v5, Landroid/content/ContentValues;
17946
17947 move-object/from16 v0, p2
17948
17949 invoke-direct {v5, v0}, Landroid/content/ContentValues;-><init>(Landroid/content/ContentValues;)V
17950
17951 .line 3793
17952 const-string v6, "bucket_id"
17953
17954 invoke-virtual {v5, v6}, Landroid/content/ContentValues;->remove(Ljava/lang/String;)V
17955
17956 .line 3794
17957 const-string v6, "bucket_display_name"
17958
17959 invoke-virtual {v5, v6}, Landroid/content/ContentValues;->remove(Ljava/lang/String;)V
17960
17961 .line 3796
17962 const-string v6, "_data"
17963
17964 invoke-virtual {v5, v6}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
17965
17966 move-result-object v6
17967
17968 .line 3797
17969 if-eqz v6, :cond_16
17970
17971 .line 3798
17972 invoke-static {v6, v5}, Lcom/android/providers/media/MediaProvider;->computeBucketValues(Ljava/lang/String;Landroid/content/ContentValues;)V
17973
17974 .line 3800
17975 :cond_16
17976 invoke-static {v5}, Lcom/android/providers/media/MediaProvider;->computeTakenTime(Landroid/content/ContentValues;)V
17977
17978 .line 3801
17979 sget-object v6, Lcom/android/providers/media/MediaProvider;->sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
17980
17981 iget-object v6, v6, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
17982
17983 sget-object v7, Lcom/android/providers/media/MediaProvider;->sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
17984
17985 iget-object v7, v7, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->where:Ljava/lang/String;
17986
17987 move-object/from16 v0, p4
17988
17989 invoke-virtual {v4, v6, v5, v7, v0}, Landroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
17990
17991 move-result v12
17992
17993 .line 3806
17994 if-lez v12, :cond_19
17995
17996 const-string v6, "_data"
17997
17998 invoke-virtual {v5, v6}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
17999
18000 move-result-object v5
18001
18002 if-eqz v5, :cond_19
18003
18004 .line 3807
18005 sget-object v5, Lcom/android/providers/media/MediaProvider;->sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
18006
18007 iget-object v5, v5, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->table:Ljava/lang/String;
18008
18009 sget-object v6, Lcom/android/providers/media/MediaProvider;->READY_FLAG_PROJECTION:[Ljava/lang/String;
18010
18011 sget-object v7, Lcom/android/providers/media/MediaProvider;->sGetTableAndWhereParam:Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;
18012
18013 iget-object v7, v7, Lcom/android/providers/media/MediaProvider$GetTableAndWhereOutParameter;->where:Ljava/lang/String;
18014
18015 const/4 v9, 0x0
18016
18017 const/4 v10, 0x0
18018
18019 const/4 v11, 0x0
18020
18021 move-object/from16 v8, p4
18022
18023 invoke-virtual/range {v4 .. v11}, Landroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
18024 :try_end_10
18025 .catchall {:try_start_10 .. :try_end_10} :catchall_1
18026
18027 move-result-object v11
18028
18029 .line 3810
18030 if-eqz v11, :cond_19
18031
18032 .line 3812
18033 :cond_17
18034 :goto_a
18035 :try_start_11
18036 invoke-interface {v11}, Landroid/database/Cursor;->moveToNext()Z
18037
18038 move-result v5
18039
18040 if-eqz v5, :cond_18
18041
18042 .line 3813
18043 const/4 v5, 0x2
18044
18045 invoke-interface {v11, v5}, Landroid/database/Cursor;->getLong(I)J
18046
18047 move-result-wide v5
18048
18049 .line 3814
18050 const-wide/16 v7, 0x0
18051
18052 cmp-long v5, v5, v7
18053
18054 if-nez v5, :cond_17
18055
18056 .line 3815
18057 const/4 v5, 0x1
18058
18059 invoke-interface {v11, v5}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
18060
18061 move-result-object v6
18062
18063 const/16 v8, 0xa
18064
18065 const-wide/16 v9, 0x0
18066
18067 move-object/from16 v5, p0
18068
18069 move-object/from16 v7, p1
18070
18071 invoke-direct/range {v5 .. v10}, Lcom/android/providers/media/MediaProvider;->requestMediaThumbnail(Ljava/lang/String;Landroid/net/Uri;IJ)Lcom/android/providers/media/MediaThumbRequest;
18072 :try_end_11
18073 .catchall {:try_start_11 .. :try_end_11} :catchall_5
18074
18075 goto :goto_a
18076
18077 .line 3820
18078 :catchall_5
18079 move-exception v4
18080
18081 :try_start_12
18082 invoke-interface {v11}, Landroid/database/Cursor;->close()V
18083
18084 throw v4
18085
18086 :cond_18
18087 invoke-interface {v11}, Landroid/database/Cursor;->close()V
18088
18089 :cond_19
18090 move v5, v12
18091
18092 .line 3825
18093 goto/16 :goto_3
18094
18095 .line 3828
18096 :sswitch_2
18097 const-string v5, "move"
18098
18099 move-object/from16 v0, p1
18100
18101 invoke-virtual {v0, v5}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
18102
18103 move-result-object v5
18104
18105 .line 3829
18106 if-eqz v5, :cond_7
18107
18108 .line 3830
18109 const-string v5, "play_order"
18110
18111 .line 3831
18112 move-object/from16 v0, p2
18113
18114 invoke-virtual {v0, v5}, Landroid/content/ContentValues;->containsKey(Ljava/lang/String;)Z
18115
18116 move-result v6
18117
18118 if-eqz v6, :cond_1a
18119
18120 .line 3832
18121 move-object/from16 v0, p2
18122
18123 invoke-virtual {v0, v5}, Landroid/content/ContentValues;->getAsInteger(Ljava/lang/String;)Ljava/lang/Integer;
18124
18125 move-result-object v5
18126
18127 invoke-virtual {v5}, Ljava/lang/Integer;->intValue()I
18128
18129 move-result v10
18130
18131 .line 3833
18132 invoke-virtual/range {p1 .. p1}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
18133
18134 move-result-object v6
18135
18136 .line 3834
18137 const/4 v5, 0x3
18138
18139 invoke-interface {v6, v5}, Ljava/util/List;->get(I)Ljava/lang/Object;
18140
18141 move-result-object v5
18142
18143 check-cast v5, Ljava/lang/String;
18144
18145 invoke-static {v5}, Ljava/lang/Long;->valueOf(Ljava/lang/String;)Ljava/lang/Long;
18146
18147 move-result-object v5
18148
18149 invoke-virtual {v5}, Ljava/lang/Long;->longValue()J
18150
18151 move-result-wide v7
18152
18153 .line 3835
18154 const/4 v5, 0x5
18155
18156 invoke-interface {v6, v5}, Ljava/util/List;->get(I)Ljava/lang/Object;
18157
18158 move-result-object v5
18159
18160 check-cast v5, Ljava/lang/String;
18161
18162 invoke-static {v5}, Ljava/lang/Integer;->valueOf(Ljava/lang/String;)Ljava/lang/Integer;
18163
18164 move-result-object v5
18165
18166 invoke-virtual {v5}, Ljava/lang/Integer;->intValue()I
18167
18168 move-result v9
18169
18170 move-object/from16 v5, p0
18171
18172 move-object v6, v4
18173
18174 .line 3836
18175 invoke-direct/range {v5 .. v10}, Lcom/android/providers/media/MediaProvider;->movePlaylistEntry(Landroid/database/sqlite/SQLiteDatabase;JII)I
18176
18177 move-result v4
18178
18179 monitor-exit v25
18180
18181 goto/16 :goto_2
18182
18183 .line 3838
18184 :cond_1a
18185 new-instance v4, Ljava/lang/IllegalArgumentException;
18186
18187 new-instance v6, Ljava/lang/StringBuilder;
18188
18189 invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
18190
18191 const-string v7, "Need to specify "
18192
18193 invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18194
18195 move-result-object v6
18196
18197 invoke-virtual {v6, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18198
18199 move-result-object v5
18200
18201 const-string v6, " when using \'move\' parameter"
18202
18203 invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18204
18205 move-result-object v5
18206
18207 invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
18208
18209 move-result-object v5
18210
18211 invoke-direct {v4, v5}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
18212
18213 throw v4
18214 :try_end_12
18215 .catchall {:try_start_12 .. :try_end_12} :catchall_1
18216
18217 :cond_1b
18218 move-object v6, v12
18219
18220 goto/16 :goto_1
18221
18222 :cond_1c
18223 move-object/from16 v23, v5
18224
18225 goto/16 :goto_0
18226
18227 .line 3673
18228 :sswitch_data_0
18229 .sparse-switch
18230 0x1 -> :sswitch_1
18231 0x2 -> :sswitch_1
18232 0x64 -> :sswitch_0
18233 0x65 -> :sswitch_0
18234 0x71 -> :sswitch_2
18235 0xc8 -> :sswitch_1
18236 0xc9 -> :sswitch_1
18237 .end sparse-switch
18238.end method