| | | |
Offset 0, 0 lines modified | Offset 1, 11815 lines modified |
| |
| 1 | package·com.android.providers.media; |
| |
| 2 | import·java.util.concurrent.Executor; |
| 3 | import·com.android.providers.media.util.BackgroundThread; |
| 4 | import·android.util.DisplayMetrics; |
| 5 | import·android.os.storage.StorageManager$StorageVolumeCallback; |
| 6 | import·android.content.IntentFilter; |
| 7 | import·android.provider.Column; |
| 8 | import·com.android.providers.media.scan.ModernMediaScanner; |
| 9 | import·java.io.PrintWriter; |
| 10 | import·java.io.FileDescriptor; |
| 11 | import·com.android.providers.media.util.ForegroundThread; |
| 12 | import·android.database.ContentObserver; |
| 13 | import·android.content.pm.ProviderInfo; |
| 14 | import·android.content.ContentProviderResult; |
| 15 | import·android.graphics.BitmapFactory; |
| 16 | import·android.graphics.BitmapFactory$Options; |
| 17 | import·java.util.regex.Matcher; |
| 18 | import·android.database.MatrixCursor; |
| 19 | import·android.content.res.AssetFileDescriptor; |
| 20 | import·android.database.sqlite.SQLiteConstraintException; |
| 21 | import·android.app.DownloadManager; |
| 22 | import·android.content.pm.PackageInstaller$SessionInfo; |
| 23 | import·java.io.OutputStream; |
| 24 | import·android.os.Process; |
| 25 | import·com.android.providers.media.util.Logging; |
| 26 | import·android.content.pm.ApplicationInfo; |
| 27 | import·android.content.res.Configuration; |
| 28 | import·android.content.res.Resources; |
| 29 | import·java.util.Locale; |
| 30 | import·com.android.providers.media.util.IsoInterface; |
| 31 | import·com.android.providers.media.util.XmpInterface; |
| 32 | import·android.media.ExifInterface; |
| 33 | import·java.io.FileInputStream; |
| 34 | import·android.provider.MediaStore$Video$Thumbnails; |
| 35 | import·android.provider.MediaStore$Audio$Genres$Members; |
| 36 | import·android.provider.MediaStore$Files$FileColumns; |
| 37 | import·android.provider.MediaStore$Audio$Thumbnails; |
| 38 | import·android.provider.MediaStore$Audio$Artists$Albums; |
| 39 | import·android.os.UserHandle; |
| 40 | import·com.android.providers.media.fuse.ExternalStorageServiceImpl; |
| 41 | import·com.android.providers.media.fuse.FuseDaemon; |
| 42 | import·android.content.pm.PermissionGroupInfo; |
| 43 | import·android.content.pm.PackageManager$NameNotFoundException; |
| 44 | import·com.android.providers.media.util.PermissionUtils; |
| 45 | import·java.util.Optional; |
| 46 | import·android.os.ParcelFileDescriptor; |
| 47 | import·java.io.Serializable; |
| 48 | import·android.provider.MediaStore$Images$Thumbnails; |
| 49 | import·android.webkit.MimeTypeMap; |
| 50 | import·com.android.providers.media.util.MimeUtils; |
| 51 | import·android.content.SharedPreferences$Editor; |
| 52 | import·android.content.SharedPreferences; |
| 53 | import·android.os.storage.StorageVolume; |
| 54 | import·android.preference.PreferenceManager; |
| 55 | import·android.database.sqlite.SQLiteDatabase; |
| 56 | import·android.icu.util.ULocale; |
| 57 | import·android.graphics.drawable.Icon; |
| 58 | import·android.app.RecoverableSecurityException; |
| 59 | import·android.app.RemoteAction; |
| 60 | import·android.content.ContentResolver; |
| 61 | import·android.os.Trace; |
| 62 | import·android.os.SystemClock; |
| 63 | import·com.android.providers.media.util.Metrics; |
| 64 | import·java.util.function.Function; |
| 65 | import·android.util.LongSparseArray; |
| 66 | import·android.os.Binder; |
| 67 | import·android.util.Log; |
| 68 | import·android.content.Intent; |
| 69 | import·android.app.PendingIntent; |
| 70 | import·java.util.Iterator; |
| 71 | import·android.net.Uri$Builder; |
| 72 | import·java.util.Objects; |
| 73 | import·com.google.common.hash.HashFunction; |
| 74 | import·java.nio.charset.StandardCharsets; |
| 75 | import·com.google.common.hash.Hashing; |
| 76 | import·java.util.List; |
| 77 | import·android.content.ClipData; |
| 78 | import·android.system.StructStat; |
| 79 | import·android.system.ErrnoException; |
| 80 | import·java.io.FileNotFoundException; |
| 81 | import·android.system.Os; |
| 82 | import·android.system.OsConstants; |
| 83 | import·android.content.Context; |
| 84 | import·android.os.Bundle; |
| 85 | import·android.provider.MediaStore$Audio; |
| 86 | import·android.text.TextUtils; |
| 87 | import·com.android.providers.media.util.DatabaseUtils; |
| 88 | import·com.android.providers.media.util.SQLiteQueryBuilder; |
| 89 | import·android.database.Cursor; |
| 90 | import·java.nio.file.Path; |
| 91 | import·java.io.IOException; |
| 92 | import·android.provider.MediaStore$Audio$Playlists$Members; |
| 93 | import·android.content.ContentUris; |
| 94 | import·com.android.providers.media.playlist.Playlist; |
| 95 | import·android.os.CancellationSignal; |
| 96 | import·android.provider.MediaStore; |
| 97 | import·android.content.ContentValues; |
| 98 | import·android.net.Uri; |
| 99 | import·java.io.File; |
| 100 | import·android.provider.MediaStore$Downloads; |
| 101 | import·android.provider.MediaStore$Files; |
| 102 | import·android.provider.MediaStore$Images$Media; |
| 103 | import·android.provider.MediaStore$Audio$Albums; |
| 104 | import·android.provider.MediaStore$Audio$Artists; |
| 105 | import·android.provider.MediaStore$Audio$Playlists; |
| 106 | import·android.provider.MediaStore$Audio$Genres; |
| 107 | import·android.provider.MediaStore$Audio$Media; |
| 108 | import·android.provider.MediaStore$Video$Media; |
| 109 | import·java.util.function.Consumer; |
| 110 | import·java.util.function.Supplier; |
| 111 | import·java.util.Collection; |
| 112 | import·java.util.Arrays; |
| 113 | import·android.os.Environment; |
| 114 | import·com.android.providers.media.util.FileUtils; |
| 115 | import·android.os.Binder$ProxyTransactListener; |
| 116 | import·android.util.Size; |
| 117 | import·android.os.storage.StorageManager; |
| 118 | import·com.android.providers.media.util.LongArray; |
| 119 | import·android.content.BroadcastReceiver; |
| 120 | import·android.content.pm.PackageManager; |
| 121 | import·android.app.AppOpsManager$OnOpChangedListener; |
| 122 | import·com.android.providers.media.scan.MediaScanner; |
| 123 | import·java.util.function.UnaryOperator; |
| 124 | import·android.util.SparseArray; |
| 125 | import·android.app.AppOpsManager; |
| 126 | import·android.app.AppOpsManager$OnOpActiveChangedListener; |
| 127 | import·android.util.ArraySet; |
| 128 | import·java.util.ArrayList; |
| 129 | import·java.util.Map; |
| 130 | import·android.util.ArrayMap; |
| 131 | import·java.util.Set; |
| 132 | import·java.util.regex.Pattern; |
| 133 | import·android.content.ContentProvider; |
| |
| 134 | public·class·MediaProvider·extends·ContentProvider |
| 135 | { |
| 136 | ····static·final·int·AUDIO_ALBUMART·=·119; |
| 137 | ····static·final·int·AUDIO_ALBUMART_FILE_ID·=·121; |
| 138 | ····static·final·int·AUDIO_ALBUMART_ID·=·120; |
| 139 | ····static·final·int·AUDIO_ALBUMS·=·116; |
| 140 | ····static·final·int·AUDIO_ALBUMS_ID·=·117; |
| 141 | ····static·final·int·AUDIO_ARTISTS·=·114; |
| 142 | ····static·final·int·AUDIO_ARTISTS_ID·=·115; |
| 143 | ····static·final·int·AUDIO_ARTISTS_ID_ALBUMS·=·118; |
| 144 | ····static·final·int·AUDIO_GENRES·=·106; |
| 145 | ····static·final·int·AUDIO_GENRES_ALL_MEMBERS·=·109; |
| 146 | ····static·final·int·AUDIO_GENRES_ID·=·107; |
| 147 | ····static·final·int·AUDIO_GENRES_ID_MEMBERS·=·108; |
| 148 | ····static·final·int·AUDIO_MEDIA·=·100; |
| 149 | ····static·final·int·AUDIO_MEDIA_ID·=·101; |
| 150 | ····static·final·int·AUDIO_MEDIA_ID_GENRES·=·102; |
| 151 | ····static·final·int·AUDIO_MEDIA_ID_GENRES_ID·=·103; |
| 152 | ····static·final·int·AUDIO_PLAYLISTS·=·110; |
| 153 | ····static·final·int·AUDIO_PLAYLISTS_ID·=·111; |
| 154 | ····static·final·int·AUDIO_PLAYLISTS_ID_MEMBERS·=·112; |
| 155 | ····static·final·int·AUDIO_PLAYLISTS_ID_MEMBERS_ID·=·113; |
| 156 | ····private·static·final·String·CANONICAL·=·"canonical"; |
| 157 | ····private·static·final·String·DIRECTORY_ALARMS·=·"Alarms"; |
| 158 | ····private·static·final·String·DIRECTORY_ANDROID·=·"Android"; |
| 159 | ····private·static·final·String·DIRECTORY_AUDIOBOOKS·=·"Audiobooks"; |
| 160 | ····private·static·final·String·DIRECTORY_DCIM·=·"DCIM"; |
| 161 | ····private·static·final·String·DIRECTORY_DOCUMENTS·=·"Documents"; |
| 162 | ····private·static·final·String·DIRECTORY_DOWNLOADS·=·"Download"; |
| 163 | ····private·static·final·String·DIRECTORY_MEDIA·=·"media"; |
| 164 | ····private·static·final·String·DIRECTORY_MOVIES·=·"Movies"; |
| 165 | ····private·static·final·String·DIRECTORY_MUSIC·=·"Music"; |
| 166 | ····private·static·final·String·DIRECTORY_NOTIFICATIONS·=·"Notifications"; |
| 167 | ····private·static·final·String·DIRECTORY_PICTURES·=·"Pictures"; |
| 168 | ····private·static·final·String·DIRECTORY_PODCASTS·=·"Podcasts"; |
| 169 | ····private·static·final·String·DIRECTORY_RINGTONES·=·"Ringtones"; |
| 170 | ····private·static·final·String·DIRECTORY_THUMBNAILS·=·".thumbnails"; |
| 171 | ····static·final·int·DOWNLOADS·=·800; |
| 172 | ····static·final·int·DOWNLOADS_ID·=·801; |
| 173 | ····static·final·int·FILES·=·700; |
| 174 | ····static·final·int·FILES_ID·=·701; |
| 175 | ····private·static·final·String·FILE_DATABASE_UUID·=·".database_uuid"; |
| 176 | ····static·final·int·FS_ID·=·600; |
| 177 | ····private·static·final·String·ID_NOT_PARENT_CLAUSE·=·"_id·NOT·IN·(SELECT·parent·FROM·files·WHERE·parent·IS·NOT·NULL)"; |
| 178 | ····static·final·int·IMAGES_MEDIA·=·1; |
| 179 | ····static·final·int·IMAGES_MEDIA_ID·=·2; |
| 180 | ····static·final·int·IMAGES_MEDIA_ID_THUMBNAIL·=·3; |
| 181 | ····static·final·int·IMAGES_THUMBNAILS·=·4; |
| 182 | ····static·final·int·IMAGES_THUMBNAILS_ID·=·5; |
| 183 | ····private·static·final·String·INCLUDED_DEFAULT_DIRECTORIES·=·"android:included-default-directories"; |
| 184 | ····private·static·final·String·MATCH_PENDING_FROM_FUSE; |
| 185 | ····private·static·final·int·MATCH_VISIBLE_FOR_FILEPATH·=·32; |
| 186 | ····static·final·int·MEDIA_SCANNER·=·500; |
| 187 | ····public·static·final·DatabaseHelper$OnLegacyMigrationListener·MIGRATION_LISTENER; |
| 188 | ····private·static·final·String[]·PATH_PROJECTION; |
| 189 | ····static·final·Pattern·PATTERN_SELECTION_ID; |
| 190 | ····private·static·final·String·PROP_FUSE·=·"persist.sys.fuse"; |
| 191 | ····private·static·final·String[]·REDACTED_EXIF_TAGS; |
| 192 | ····private·static·final·int[]·REDACTED_ISO_BOXES; |
| 193 | ····private·static·final·int·TYPE_DELETE·=·3; |
| 194 | ····private·static·final·int·TYPE_INSERT·=·1; |
| 195 | ····private·static·final·int·TYPE_QUERY·=·0; |
| 196 | ····private·static·final·int·TYPE_UPDATE·=·2; |
| 197 | ····static·final·int·VERSION·=·601; |
| 198 | ····static·final·int·VIDEO_MEDIA·=·200; |
| 199 | ····static·final·int·VIDEO_MEDIA_ID·=·201; |
| 200 | ····static·final·int·VIDEO_MEDIA_ID_THUMBNAIL·=·202; |
| 201 | ····static·final·int·VIDEO_THUMBNAILS·=·203; |
| 202 | ····static·final·int·VIDEO_THUMBNAILS_ID·=·204; |
| 203 | ····static·final·int·VOLUMES·=·300; |
| 204 | ····static·final·int·VOLUMES_ID·=·301; |
| 205 | ····private·static·final·Object·sCacheLock; |
| 206 | ····private·static·final·Set·sCachedExternalVolumeNames; |
| 207 | ····private·static·final·ArrayMap·sCachedVolumePathToId; |
| 208 | ····private·static·final·Map·sCachedVolumePaths; |
| 209 | ····private·static·final·Map·sCachedVolumeScanPaths; |
| 210 | ····private·static·final·ArrayMap·sDataColumns; |
| 211 | ····private·static·final·String[]·sDataOnlyColumn; |
| 212 | ····private·static·final·String[]·sDefaultFolderNames; |
| 213 | ····static·final·ArrayList·sGreylist; |
| 214 | ····private·static·final·ArraySet·sMutableColumns; |
| 215 | ····private·static·final·ArraySet·sPlacementColumns; |
| 216 | ····public·static·final·Set·sRedactedExifTags; |
| 217 | ····private·final·AppOpsManager$OnOpActiveChangedListener·mActiveListener; |
| 218 | ····private·AppOpsManager·mAppOpsManager; |
| 219 | ····private·final·ArraySet·mAttachedVolumeNames; |
| 220 | ····private·MediaProvider$Thumbnailer·mAudioThumbnailer; |
| 221 | ····private·final·SparseArray·mCachedCallingIdentity; |
| 222 | ····private·final·SparseArray·mCachedCallingIdentityForFuse; |
| 223 | ····private·final·ThreadLocal·mCallingIdentity; |
| 224 | ····private·final·ArraySet·mCustomCollators; |
| 225 | ····private·final·ArrayMap·mDirectoryCache; |
| 226 | ····private·DatabaseHelper·mExternalDatabase; |
| 227 | ····private·final·DatabaseHelper$OnFilesChangeListener·mFilesListener; |
| 228 | ····private·final·UnaryOperator·mIdGenerator; |
| 229 | ····private·MediaProvider$Thumbnailer·mImageThumbnailer; |
| 230 | ····private·DatabaseHelper·mInternalDatabase; |
| 231 | ····private·MediaScanner·mMediaScanner; |
| 232 | ····private·String·mMediaScannerVolume; |
| 233 | ····private·AppOpsManager$OnOpChangedListener·mModeListener; |
| 234 | ····private·PackageManager·mPackageManager; |
| 235 | ····private·BroadcastReceiver·mPackageReceiver; |
| 236 | ····private·final·LongArray·mShouldRedactThreadIds; |
| 237 | ····private·StorageManager·mStorageManager; |
| 238 | ····private·Size·mThumbSize; |
| 239 | ····private·final·Binder$ProxyTransactListener·mTransactListener; |
| 240 | ····private·MediaProvider$LocalUriMatcher·mUriMatcher; |
| 241 | ····private·MediaProvider$Thumbnailer·mVideoThumbnailer; |
| 242 | ····private·int·mVolumeId; |
| 243 | ···· |
| 244 | ····static·{ |
| 245 | ········PATTERN_SELECTION_ID·=·Pattern.compile("(?:image_id|video_id)\\s*=\\s*(\\d+)"); |
| 246 | ········final·int·n·=·2; |
| 247 | ········final·Object[]·array·=·new·Object[n]; |
| 248 | ········final·String·s·=·"_data"; |
| 249 | ········array[0]·=·s; |
| 250 | ········final·Pattern·pattern_PENDING_FILEPATH_FOR_SQL·=·FileUtils.PATTERN_PENDING_FILEPATH_FOR_SQL; |
| 251 | ········final·int·n2·=·1; |
| 252 | ········array[n2]·=·pattern_PENDING_FILEPATH_FOR_SQL; |
| 253 | ········MATCH_PENDING_FROM_FUSE·=·String.format("lower(%s)·NOT·REGEXP·'%s'",·array); |
| 254 | ········sDataColumns·=·new·ArrayMap(); |
| 255 | ········sCacheLock·=·new·Object(); |
| 256 | ········sCachedExternalVolumeNames·=·(Set)new·ArraySet(); |
| 257 | ········sCachedVolumePaths·=·(Map)new·ArrayMap(); |
| 258 | ········sCachedVolumeScanPaths·=·(Map)new·ArrayMap(); |
| 259 | ········sCachedVolumePathToId·=·new·ArrayMap(); |
| 260 | ········sDataOnlyColumn·=·new·String[]·{·s·}; |
| 261 | ········MIGRATION_LISTENER·=·(DatabaseHelper$OnLegacyMigrationListener)new·MediaProvider$4(); |
| 262 | ········final·String[]·sDefaultFolderNames2·=·new·String[11]; |
| 263 | ········sDefaultFolderNames2[0]·=·Environment.DIRECTORY_MUSIC; |
| 264 | ········sDefaultFolderNames2[n2]·=·Environment.DIRECTORY_PODCASTS; |
| 265 | ········sDefaultFolderNames2[n]·=·Environment.DIRECTORY_RINGTONES; |
| 266 | ········sDefaultFolderNames2[3]·=·Environment.DIRECTORY_ALARMS; |
| 267 | ········final·String·directory_NOTIFICATIONS·=·Environment.DIRECTORY_NOTIFICATIONS; |
| 268 | ········final·int·n3·=·4; |
| 269 | ········sDefaultFolderNames2[n3]·=·directory_NOTIFICATIONS; |
| 270 | ········sDefaultFolderNames2[5]·=·Environment.DIRECTORY_PICTURES; |
| 271 | ········sDefaultFolderNames2[6]·=·Environment.DIRECTORY_MOVIES; |
| 272 | ········sDefaultFolderNames2[7]·=·Environment.DIRECTORY_DOWNLOADS; |
| 273 | ········sDefaultFolderNames2[8]·=·Environment.DIRECTORY_DCIM; |
| 274 | ········sDefaultFolderNames2[9]·=·Environment.DIRECTORY_AUDIOBOOKS; |
| 275 | ········sDefaultFolderNames2[10]·=·Environment.DIRECTORY_DOCUMENTS; |
| 276 | ········sDefaultFolderNames·=·sDefaultFolderNames2; |
| 277 | ········REDACTED_EXIF_TAGS·=·new·String[]·{·"GPSAltitude",·"GPSAltitudeRef",·"GPSAreaInformation",·"GPSDOP",·"GPSDateStamp",·"GPSDestBearing",·"GPSDestBearingRef",·"GPSDestDistance",·"GPSDestDistanceRef",·"GPSDestLatitude",·"GPSDestLatitudeRef",·"GPSDestLongitude",·"GPSDestLongitudeRef",·"GPSDifferential",·"GPSImgDirection",·"GPSImgDirectionRef",·"GPSLatitude",·"GPSLatitudeRef",·"GPSLongitude",·"GPSLongitudeRef",·"GPSMapDatum",·"GPSMeasureMode",·"GPSProcessingMethod",·"GPSSatellites",·"GPSSpeed",·"GPSSpeedRef",·"GPSStatus",·"GPSTimeStamp",·"GPSTrack",·"GPSTrackRef",·"GPSVersionID"·}; |
| 278 | ········final·int[]·array2; |
| 279 | ········final·int[]·redacted_ISO_BOXES·=·array2·=·new·int[n3]; |
| 280 | ········array2[0]·=·1819239273; |
| 281 | ········array2[1]·=·-1451722374; |
| 282 | ········array2[2]·=·1735422752; |
| 283 | ········array2[3]·=·1735422768; |
| 284 | ········REDACTED_ISO_BOXES·=·redacted_ISO_BOXES; |
| 285 | ········sRedactedExifTags·=·(Set)new·ArraySet((Collection)Arrays.asList(MediaProvider.REDACTED_EXIF_TAGS)); |
| 286 | ········PATH_PROJECTION·=·new·String[]·{·"_id",·s·}; |
| 287 | ········sMutableColumns·=·new·ArraySet(); |
| 288 | ········sPlacementColumns·=·new·ArraySet(); |
| 289 | ········sGreylist·=·new·ArrayList(); |
| 290 | ········addGreylistPattern("(?i)[_a-z0-9]+(·(as·)?[_a-z0-9]+)?"); |
| 291 | ········addGreylistPattern("audio\\._id·AS·_id"); |
| 292 | ········addGreylistPattern("(?i)(min|max|sum|avg|total|count|cast)\\(([_a-z0-9]+(·(as·)?[_a-z0-9]+)?|\\*)\\)(·(as·)?[_a-z0-9]+)?"); |
| 293 | ········addGreylistPattern("case·when·case·when·\\(date_added·>=·\\d+·and·date_added·<·\\d+\\)·then·date_added·\\*·\\d+·when·\\(date_added·>=·\\d+·and·date_added·<·\\d+\\)·then·date_added·when·\\(date_added·>=·\\d+·and·date_added·<·\\d+\\)·then·date_added·/·\\d+·else·\\d+·end·>·case·when·\\(date_modified·>=·\\d+·and·date_modified·<·\\d+\\)·then·date_modified·\\*·\\d+·when·\\(date_modified·>=·\\d+·and·date_modified·<·\\d+\\)·then·date_modified·when·\\(date_modified·>=·\\d+·and·date_modified·<·\\d+\\)·then·date_modified·/·\\d+·else·\\d+·end·then·case·when·\\(date_added·>=·\\d+·and·date_added·<·\\d+\\)·then·date_added·\\*·\\d+·when·\\(date_added·>=·\\d+·and·date_added·<·\\d+\\)·then·date_added·when·\\(date_added·>=·\\d+·and·date_added·<·\\d+\\)·then·date_added·/·\\d+·else·\\d+·end·else·case·when·\\(date_modified·>=·\\d+·and·date_modified·<·\\d+\\)·then·date_modified·\\*·\\d+·when·\\(date_modified·>=·\\d+·and·date_modified·<·\\d+\\)·then·date_modified·when·\\(date_modified·>=·\\d+·and·date_modified·<·\\d+\\)·then·date_modified·/·\\d+·else·\\d+·end·end·as·corrected_added_modified"); |
| 294 | ········addGreylistPattern("MAX\\(case·when·\\(datetaken·>=·\\d+·and·datetaken·<·\\d+\\)·then·datetaken·\\*·\\d+·when·\\(datetaken·>=·\\d+·and·datetaken·<·\\d+\\)·then·datetaken·when·\\(datetaken·>=·\\d+·and·datetaken·<·\\d+\\)·then·datetaken·/·\\d+·else·\\d+·end\\)"); |
| 295 | ········addGreylistPattern("MAX\\(case·when·\\(date_added·>=·\\d+·and·date_added·<·\\d+\\)·then·date_added·\\*·\\d+·when·\\(date_added·>=·\\d+·and·date_added·<·\\d+\\)·then·date_added·when·\\(date_added·>=·\\d+·and·date_added·<·\\d+\\)·then·date_added·/·\\d+·else·\\d+·end\\)"); |
| 296 | ········addGreylistPattern("MAX\\(case·when·\\(date_modified·>=·\\d+·and·date_modified·<·\\d+\\)·then·date_modified·\\*·\\d+·when·\\(date_modified·>=·\\d+·and·date_modified·<·\\d+\\)·then·date_modified·when·\\(date_modified·>=·\\d+·and·date_modified·<·\\d+\\)·then·date_modified·/·\\d+·else·\\d+·end\\)"); |
| 297 | ········addGreylistPattern("\"content://media/[a-z]+/audio/media\""); |
| 298 | ········addGreylistPattern("substr\\(_data,·length\\(_data\\)-length\\(_display_name\\),·1\\)·as·filename_prevchar"); |
| 299 | ········addGreylistPattern("\\*(·(as·)?[_a-z0-9]+)?"); |
| 300 | ········addGreylistPattern("case·when·\\(datetaken·>=·\\d+·and·datetaken·<·\\d+\\)·then·datetaken·\\*·\\d+·when·\\(datetaken·>=·\\d+·and·datetaken·<·\\d+\\)·then·datetaken·when·\\(datetaken·>=·\\d+·and·datetaken·<·\\d+\\)·then·datetaken·/·\\d+·else·\\d+·end"); |
| 301 | ····} |
| 302 | ···· |
| 303 | ····public·MediaProvider()·{ |
| 304 | ········final·ArrayMap·sDataColumns·=·MediaProvider.sDataColumns; |
| 305 | ········final·String·s·=·"_data"; |
| 306 | ········sDataColumns.put((Object)s,·(Object)null); |
| 307 | ········MediaProvider.sDataColumns.put((Object)s,·(Object)null); |
| 308 | ········MediaProvider.sDataColumns.put((Object)s,·(Object)null); |
| 309 | ········MediaProvider.sDataColumns.put((Object)s,·(Object)null); |
| 310 | ········MediaProvider.sDataColumns.put((Object)"album_art",·(Object)null); |
| 311 | ········this.mShouldRedactThreadIds·=·new·LongArray(); |
| 312 | ········this.mCachedCallingIdentity·=·new·SparseArray(); |
| 313 | ········this.mActiveListener·=·(AppOpsManager$OnOpActiveChangedListener)new·-$$Lambda$MediaProvider$zzbBPses8qCuVDntfxAMM7hPnyI(this); |
| 314 | ········this.mCachedCallingIdentityForFuse·=·new·SparseArray(); |
| 315 | ········this.mModeListener·=·(AppOpsManager$OnOpChangedListener)new·-$$Lambda$MediaProvider$vH68ZyRa5ZtWWiD0JYR19W_k2Pk(this); |
| 316 | ········this.mCallingIdentity·=·ThreadLocal.withInitial((Supplier<?>)new·-$$Lambda$MediaProvider$5P4DLDQvZ2kc1HR2A_5XtxnnQ74(this)); |
| 317 | ········this.mTransactListener·=·(Binder$ProxyTransactListener)new·MediaProvider$1(this); |
| 318 | ········this.mDirectoryCache·=·new·ArrayMap(); |
| 319 | ········this.mPackageReceiver·=·(BroadcastReceiver)new·MediaProvider$2(this); |
| 320 | ········this.mFilesListener·=·(DatabaseHelper$OnFilesChangeListener)new·MediaProvider$3(this); |
| 321 | ········this.mIdGenerator·=·(UnaryOperator)new·-$$Lambda$MediaProvider$ovdhzjNF-N478oRw_XRNF5Z65tg(this); |
| 322 | ········this.mAudioThumbnailer·=·(MediaProvider$Thumbnailer)new·MediaProvider$6(this,·Environment.DIRECTORY_MUSIC); |
| 323 | ········this.mVideoThumbnailer·=·(MediaProvider$Thumbnailer)new·MediaProvider$7(this,·Environment.DIRECTORY_MOVIES); |
| 324 | ········this.mImageThumbnailer·=·(MediaProvider$Thumbnailer)new·MediaProvider$8(this,·Environment.DIRECTORY_PICTURES); |
| 325 | ········this.mAttachedVolumeNames·=·new·ArraySet(); |
| 326 | ········this.mCustomCollators·=·new·ArraySet(); |
| 327 | ········this.mVolumeId·=·-1; |
| 328 | ········MediaProvider.sMutableColumns.add((Object)s); |
| 329 | ········final·ArraySet·sMutableColumns·=·MediaProvider.sMutableColumns; |
| 330 | ········final·String·s2·=·"relative_path"; |
| 331 | ········sMutableColumns.add((Object)s2); |
| 332 | ········final·ArraySet·sMutableColumns2·=·MediaProvider.sMutableColumns; |
| 333 | ········final·String·s3·=·"_display_name"; |
| 334 | ········sMutableColumns2.add((Object)s3); |
| 335 | ········final·ArraySet·sMutableColumns3·=·MediaProvider.sMutableColumns; |
| 336 | ········final·String·s4·=·"is_pending"; |
| 337 | ········sMutableColumns3.add((Object)s4); |
| 338 | ········final·ArraySet·sMutableColumns4·=·MediaProvider.sMutableColumns; |
| 339 | ········final·String·s5·=·"is_trashed"; |
| 340 | ········sMutableColumns4.add((Object)s5); |
| 341 | ········MediaProvider.sMutableColumns.add((Object)"is_favorite"); |
| 342 | ········MediaProvider.sMutableColumns.add((Object)"owner_package_name"); |
| 343 | ········final·ArraySet·sMutableColumns5·=·MediaProvider.sMutableColumns; |
| 344 | ········final·String·s6·=·"bookmark"; |
| 345 | ········sMutableColumns5.add((Object)s6); |
| 346 | ········MediaProvider.sMutableColumns.add((Object)"tags"); |
| 347 | ········MediaProvider.sMutableColumns.add((Object)"category"); |
| 348 | ········MediaProvider.sMutableColumns.add((Object)s6); |
| 349 | ········MediaProvider.sMutableColumns.add((Object)"name"); |
| 350 | ········MediaProvider.sMutableColumns.add((Object)"audio_id"); |
| 351 | ········MediaProvider.sMutableColumns.add((Object)"play_order"); |
| 352 | ········MediaProvider.sMutableColumns.add((Object)"download_uri"); |
| 353 | ········MediaProvider.sMutableColumns.add((Object)"referer_uri"); |
| 354 | ········final·ArraySet·sMutableColumns6·=·MediaProvider.sMutableColumns; |
| 355 | ········final·String·s7·=·"mime_type"; |
| 356 | ········sMutableColumns6.add((Object)s7); |
| 357 | ········MediaProvider.sMutableColumns.add((Object)"media_type"); |
| 358 | ········MediaProvider.sPlacementColumns.add((Object)s); |
| 359 | ········MediaProvider.sPlacementColumns.add((Object)s2); |
| 360 | ········MediaProvider.sPlacementColumns.add((Object)s3); |
| 361 | ········MediaProvider.sPlacementColumns.add((Object)s7); |
| 362 | ········MediaProvider.sPlacementColumns.add((Object)s4); |
| 363 | ········MediaProvider.sPlacementColumns.add((Object)s5); |
| 364 | ········MediaProvider.sPlacementColumns.add((Object)"date_expires"); |
| 365 | ····} |
| 366 | ···· |
| 367 | ····private·void·acceptWithExpansion(final·Consumer·consumer,·final·String·s,·final·long·n,·final·int·n2,·final·boolean·b)·{ |
| 368 | ········final·boolean·b2·=·true; |
| 369 | ········if·(n2·!=·(b2·?·1·:·0))·{ |
| 370 | ············if·(n2·!=·2)·{ |
| 371 | ················if·(n2·==·3)·{ |
| 372 | ····················consumer.accept(MediaStore$Video$Media.getContentUri(s,·n)); |
| 373 | ················} |
| 374 | ············} |
| 375 | ············else·{ |
| 376 | ················consumer.accept(MediaStore$Audio$Media.getContentUri(s,·n)); |
| 377 | ················consumer.accept(MediaStore$Audio$Genres.getContentUri(s)); |
| 378 | ················consumer.accept(MediaStore$Audio$Playlists.getContentUri(s)); |
| 379 | ················consumer.accept(MediaStore$Audio$Artists.getContentUri(s)); |
| 380 | ················consumer.accept(MediaStore$Audio$Albums.getContentUri(s)); |
| 381 | ············} |
| 382 | ········} |
| 383 | ········else·{ |
| 384 | ············consumer.accept(MediaStore$Images$Media.getContentUri(s,·n)); |
| 385 | ········} |
| 386 | ········consumer.accept(MediaStore$Files.getContentUri(s,·n)); |
| 387 | ········if·(b)·{ |
| 388 | ············consumer.accept(MediaStore$Downloads.getContentUri(s,·n)); |
| 389 | ········} |
| 390 | ········int·n3·=·-1; |
| 391 | ········final·int·hashCode·=·s.hashCode(); |
| 392 | ········if·(hashCode·!=·-1820761141)·{ |
| 393 | ············if·(hashCode·==·570410685)·{ |
| 394 | ················if·(s.equals("internal"))·{ |
| 395 | ····················n3·=·0; |
| 396 | ················} |
| 397 | ············} |
| 398 | ········} |
| 399 | ········else·if·(s.equals("external"))·{ |
| 400 | ············n3·=·(b2·?·1·:·0); |
| 401 | ········} |
| 402 | ········if·(n3·&&·n3·!=·(b2·?·1·:·0))·{ |
| 403 | ············this.acceptWithExpansion(consumer,·"external",·n,·n2,·b); |
| 404 | ········} |
| 405 | ····} |
| 406 | ···· |
| 407 | ····private·static·void·addGreylistPattern(final·String·s)·{ |
| 408 | ········final·ArrayList·sGreylist·=·MediaProvider.sGreylist; |
| 409 | ········final·StringBuilder·sb·=·new·StringBuilder(); |
| 410 | ········final·String·s2·=·"·*"; |
| 411 | ········sb.append(s2); |
| 412 | ········sb.append(s); |
| 413 | ········sb.append(s2); |
| 414 | ········sGreylist.add(Pattern.compile(sb.toString())); |
| 415 | ····} |
| 416 | ···· |
| 417 | ····private·long·addPlaylistMembers(final·Uri·uri,·final·ContentValues·contentValues)·{ |
| 418 | ········final·Uri·contentUri·=·MediaStore$Audio$Media.getContentUri(MediaStore.getVolumeName(uri),·(long)contentValues.getAsLong("audio_id")); |
| 419 | ········final·Integer·asInteger·=·contentValues.getAsInteger("play_order"); |
| 420 | ········int·n; |
| 421 | ········if·(asInteger·!=·null)·{ |
| 422 | ············n·=·asInteger·-·1; |
| 423 | ········} |
| 424 | ········else·{ |
| 425 | ············n·=·-1·>>>·1; |
| 426 | ········} |
| 427 | ········final·Integer·value·=·n; |
| 428 | ········final·Uri·uri2·=·uri; |
| 429 | ········try·{ |
| 430 | ············final·File·queryForDataFile·=·this.queryForDataFile(uri2,·null); |
| 431 | ············final·File·queryForDataFile2·=·this.queryForDataFile(contentUri,·null); |
| 432 | ············try·{ |
| 433 | ················try·{ |
| 434 | ····················final·Playlist·playlist2; |
| 435 | ····················final·Playlist·playlist·=·playlist2·=·new·Playlist(); |
| 436 | ····················try·{ |
| 437 | ························playlist2.read(queryForDataFile); |
| 438 | ························final·int·intValue·=·(int)value; |
| 439 | ························try·{ |
| 440 | ····························final·Path·path·=·queryForDataFile.toPath(); |
| 441 | ····························try·{ |
| 442 | ································final·Path·parent·=·path.getParent(); |
| 443 | ································try·{ |
| 444 | ····································final·int·add·=·playlist.add(intValue,·parent.relativize(queryForDataFile2.toPath())); |
| 445 | ····································try·{ |
| 446 | ········································final·Integer·value2·=·add; |
| 447 | ········································playlist.write(queryForDataFile); |
| 448 | ········································try·{ |
| 449 | ············································this.resolvePlaylistMembers(uri); |
| 450 | ············································final·String·volumeName·=·MediaStore.getVolumeName(uri); |
| 451 | ············································try·{ |
| 452 | ················································final·Uri·contentUri2·=·MediaStore$Audio$Playlists$Members.getContentUri(volumeName,·ContentUris.parseId(uri)); |
| 453 | ················································final·String[]·array·=·{·"_id"·}; |
| 454 | ················································try·{ |
| 455 | ····················································try·{ |
| 456 | ························································final·StringBuilder·sb·=·new·StringBuilder(); |
| 457 | ························································sb.append("play_order="); |
| 458 | ························································sb.append((int)value2·+·1); |
| 459 | ························································final·Cursor·query·=·this.query(contentUri2,·array,·sb.toString(),·null,·null); |
| 460 | ························································try·{ |
| 461 | ····························································query.moveToFirst(); |
| 462 | ····························································final·long·long1·=·query.getLong(0); |
| 463 | ····························································if·(query·!=·null)·{ |
| 464 | ································································query.close(); |
| 465 | ····························································} |
| 466 | ····························································return·long1; |
| 467 | ························································} |
| 468 | ························································finally·{ |
| 469 | ····························································if·(query·!=·null)·{ |
| 470 | ································································try·{ |
| 471 | ····································································query.close(); |
| 472 | ································································} |
| 473 | ································································finally·{ |
| 474 | ····································································final·Throwable·t; |
| 475 | ····································································((Throwable)uri).addSuppressed(t); |
| 476 | ································································} |
| 477 | ····························································} |
| 478 | ························································} |
| 479 | ····················································} |
| 480 | ····················································catch·(IOException·ex)·{ |
| 481 | ························································throw·new·MediaProvider$FallbackException("Failed·to·update·playlist",·(Throwable)ex,·30); |
| 482 | ····················································} |
| 483 | ················································} |
| 484 | ················································catch·(IOException·ex2)·{} |
| 485 | ············································} |
| 486 | ············································catch·(IOException·ex3)·{} |
| 487 | ········································} |
| 488 | ········································catch·(IOException·ex4)·{} |
| 489 | ····································} |
| 490 | ····································catch·(IOException·ex5)·{} |
| 491 | ································} |
| 492 | ································catch·(IOException·ex6)·{} |
| 493 | ····························} |
| 494 | ····························catch·(IOException·ex7)·{} |
| 495 | ························} |
| 496 | ························catch·(IOException·ex8)·{} |
| 497 | ····················} |
| 498 | ····················catch·(IOException·ex9)·{} |
| 499 | ················} |
| 500 | ················catch·(IOException·ex10)·{} |
| 501 | ············} |
| 502 | ············catch·(IOException·ex11)·{} |
| 503 | ········} |
| 504 | ········catch·(IOException·ex12)·{} |
| 505 | ····} |
| 506 | ···· |
| 507 | ····private·static·void·appendWhereStandalone(final·SQLiteQueryBuilder·sqLiteQueryBuilder,·String·bindSelection,·final·Object...·array)·{ |
| 508 | ········bindSelection·=·DatabaseUtils.bindSelection(bindSelection,·array); |
| 509 | ········sqLiteQueryBuilder.appendWhereStandalone((CharSequence)bindSelection); |
| 510 | ····} |
| 511 | ···· |
| 512 | ····private·static·void·appendWhereStandaloneFilter(final·SQLiteQueryBuilder·sqLiteQueryBuilder,·final·String[]·array,·final·String·s)·{ |
| 513 | ········if·(TextUtils.isEmpty((CharSequence)s))·{ |
| 514 | ············return; |
| 515 | ········} |
| 516 | ········final·String[]·split·=·s.split("\\s+"); |
| 517 | ········for·(int·length·=·split.length,·i·=·0;·i·<·length;·++i)·{ |
| 518 | ············final·String·s2·=·split[i]; |
| 519 | ············final·StringBuilder·sb·=·new·StringBuilder(); |
| 520 | ············sb.append(String.join((CharSequence)"||",·(CharSequence[])array)); |
| 521 | ············sb.append("·LIKE·?·ESCAPE·'\\'"); |
| 522 | ············final·String·string·=·sb.toString(); |
| 523 | ············final·Object[]·array2·=·{·null·}; |
| 524 | ············final·StringBuilder·sb2·=·new·StringBuilder(); |
| 525 | ············final·String·s3·=·"%"; |
| 526 | ············sb2.append(s3); |
| 527 | ············sb2.append(DatabaseUtils.escapeForLike(MediaStore$Audio.keyFor(s2))); |
| 528 | ············sb2.append(s3); |
| 529 | ············array2[0]·=·sb2.toString(); |
| 530 | ············appendWhereStandalone(sqLiteQueryBuilder,·string,·array2); |
| 531 | ········} |
| 532 | ····} |
| 533 | ···· |
| 534 | ····private·void·appendWhereStandaloneMatch(final·SQLiteQueryBuilder·sqLiteQueryBuilder,·final·String·s,·final·int·n,·final·Uri·uri)·{ |
| 535 | ········final·int·n2·=·1; |
| 536 | ········if·(n·!=·n2)·{ |
| 537 | ············if·(n·!=·2)·{ |
| 538 | ················if·(n·!=·3)·{ |
| 539 | ····················if·(n·!=·32)·{ |
| 540 | ························throw·new·IllegalArgumentException(); |
| 541 | ····················} |
| 542 | ····················final·String·whereClauseForMatchableVisibleFromFilePath·=·this.getWhereClauseForMatchableVisibleFromFilePath(uri,·s); |
| 543 | ····················if·(whereClauseForMatchableVisibleFromFilePath·!=·null)·{ |
| 544 | ························appendWhereStandalone(sqLiteQueryBuilder,·whereClauseForMatchableVisibleFromFilePath,·new·Object[0]); |
| 545 | ····················} |
| 546 | ················} |
| 547 | ················else·{ |
| 548 | ····················final·StringBuilder·sb·=·new·StringBuilder(); |
| 549 | ····················sb.append(s); |
| 550 | ····················sb.append("=?"); |
| 551 | ····················final·String·string·=·sb.toString(); |
| 552 | ····················final·Object[]·array·=·new·Object[n2]; |
| 553 | ····················array[0]·=·n2; |
| 554 | ····················appendWhereStandalone(sqLiteQueryBuilder,·string,·array); |
| 555 | ················} |
| 556 | ············} |
| 557 | ············else·{ |
| 558 | ················appendWhereStandalone(sqLiteQueryBuilder,·this.getWhereClauseForMatchExclude(s),·new·Object[0]); |
| 559 | ············} |
| 560 | ········} |
| 561 | ····} |
| 562 | ···· |
| 563 | ····private·void·assertFileColumnsSane(final·int·n,·Uri·resolveVolumeName,·final·ContentValues·contentValues)·{ |
| 564 | ········final·String·s·=·"_data"; |
| 565 | ········if·(!contentValues.containsKey(s))·{ |
| 566 | ············return; |
| 567 | ········} |
| 568 | ········resolveVolumeName·=·(Uri)resolveVolumeName(resolveVolumeName); |
| 569 | ········try·{ |
| 570 | ············final·Collection·volumeScanPaths·=·this.getVolumeScanPaths((String)resolveVolumeName); |
| 571 | ············try·{ |
| 572 | ················final·File·canonicalFile·=·new·File(contentValues.getAsString(s)).getCanonicalFile(); |
| 573 | ················if·(FileUtils.contains(volumeScanPaths,·canonicalFile))·{ |
| 574 | ····················return; |
| 575 | ················} |
| 576 | ················throw·new·MediaProvider$VolumeArgumentException(canonicalFile,·volumeScanPaths); |
| 577 | ············} |
| 578 | ············catch·(IOException·ex)·{} |
| 579 | ········} |
| 580 | ········catch·(IOException·ex2)·{} |
| 581 | ····} |
| 582 | ···· |
| 583 | ····private·Bundle·callInternal(final·String·p0,·final·String·p1,·final·Bundle·p2)·{ |
| 584 | ········//· |
| 585 | ········//·This·method·could·not·be·decompiled. |
| 586 | ········//· |
| 587 | ········//·Original·Bytecode: |
| 588 | ········//· |
| 589 | ········//·····1:·invokevirtual···java/lang/String.hashCode:()I |
| 590 | ········//·····4:·istore··········4 |
| 591 | ········//·····6:·ldc_w···········"scan_volume" |
| 592 | ········//·····9:·astore··········5 |
| 593 | ········//····11:·ldc_w···········"scan_file" |
| 594 | ········//····14:·astore··········6 |
| 595 | ········//····16:·iconst_m1······ |
| 596 | ········//····17:·istore··········7 |
| 597 | ········//····19:·iconst_2······· |
| 598 | ········//····20:·istore··········8 |
| 599 | ········//····22:·iconst_1······· |
| 600 | ········//····23:·istore··········9 |
| 601 | ········//····25:·ldc·············1.4E-45 |
| 602 | ········//····27:·fstore··········10 |
| 603 | ········//····29:·iload···········4 |
| 604 | ········//····31:·lookupswitch·{ |
| 605 | ········//··········-1825673730:·442 |
| 606 | ········//··········-1662171364:·423 |
| 607 | ········//··········-1639339800:·398 |
| 608 | ········//··········-1389267692:·373 |
| 609 | ········//··········-1198147951:·348 |
| 610 | ········//··········-914121311:·323 |
| 611 | ········//··········-665880162:·298 |
| 612 | ········//··········-208838705:·273 |
| 613 | ········//··········428121327:·249 |
| 614 | ········//··········508472364:·224 |
| 615 | ········//··········1330017695:·197 |
| 616 | ········//··········1948507781:·172 |
| 617 | ········//··········2052072028:·147 |
| 618 | ········//··········default:·144 |
| 619 | ········//········} |
| 620 | ········//···144:·goto············461 |
| 621 | ········//···147:·ldc_w···········"run_idle_maintenance" |
| 622 | ········//···150:·astore··········11 |
| 623 | ········//···152:·aload_1········ |
| 624 | ········//···153:·aload···········11 |
| 625 | ········//···155:·invokevirtual···java/lang/String.equals:(Ljava/lang/Object;)Z |
| 626 | ········//···158:·istore··········4 |
| 627 | ········//···160:·iload···········4 |
| 628 | ········//···162:·ifeq············461 |
| 629 | ········//···165:·iload···········9 |
| 630 | ········//···167:·istore··········4 |
| 631 | ········//···169:·goto············465 |
| 632 | ········//···172:·ldc_w···········"create_trash_request" |
| 633 | ········//···175:·astore··········11 |
| 634 | ········//···177:·aload_1········ |
| 635 | ········//···178:·aload···········11 |
| 636 | ········//···180:·invokevirtual···java/lang/String.equals:(Ljava/lang/Object;)Z |
| 637 | ········//···183:·istore··········4 |
| 638 | ········//···185:·iload···········4 |
| 639 | ········//···187:·ifeq············461 |
| 640 | ········//···190:·bipush··········11 |
| 641 | ········//···192:·istore··········4 |
| 642 | ········//···194:·goto············465 |
| 643 | ········//···197:·ldc_w···········"resolve_playlist_members" |
| 644 | ········//···200:·astore··········11 |
| 645 | ········//···202:·aload_1········ |
| 646 | ········//···203:·aload···········11 |
| 647 | ········//···205:·invokevirtual···java/lang/String.equals:(Ljava/lang/Object;)Z |
| 648 | ········//···208:·istore··········4 |
| 649 | ········//···210:·iload···········4 |
| 650 | ········//···212:·ifeq············461 |
| 651 | ········//···215:·iconst_0······· |
| 652 | ········//···216:·istore··········4 |
| 653 | ········//···218:·aconst_null···· |
| 654 | ········//···219:·astore··········11 |
| 655 | ········//···221:·goto············465 |
| 656 | ········//···224:·ldc_w···········"create_write_request" |
| 657 | ········//···227:·astore··········11 |
| 658 | ········//···229:·aload_1········ |
| 659 | ········//···230:·aload···········11 |
| 660 | ········//···232:·invokevirtual···java/lang/String.equals:(Ljava/lang/Object;)Z |
| 661 | ········//···235:·istore··········4 |
| 662 | ········//···237:·iload···········4 |
| 663 | ········//···239:·ifeq············461 |
| 664 | ········//···242:·bipush··········9 |
| 665 | ········//···244:·istore··········4 |
| 666 | ········//···246:·goto············465 |
| 667 | ········//···249:·ldc_w···········"get_version" |
| 668 | ········//···252:·astore··········11 |
| 669 | ········//···254:·aload_1········ |
| 670 | ········//···255:·aload···········11 |
| 671 | ········//···257:·invokevirtual···java/lang/String.equals:(Ljava/lang/Object;)Z |
| 672 | ········//···260:·istore··········4 |
| 673 | ········//···262:·iload···········4 |
| 674 | ········//···264:·ifeq············461 |
| 675 | ········//···267:·iconst_5······· |
| 676 | ········//···268:·istore··········4 |
| 677 | ········//···270:·goto············465 |
| 678 | ········//···273:·ldc_w···········"create_favorite_request" |
| 679 | ········//···276:·astore··········11 |
| 680 | ········//···278:·aload_1········ |
| 681 | ········//···279:·aload···········11 |
| 682 | ········//···281:·invokevirtual···java/lang/String.equals:(Ljava/lang/Object;)Z |
| 683 | ········//···284:·istore··········4 |
| 684 | ········//···286:·iload···········4 |
| 685 | ········//···288:·ifeq············461 |
| 686 | ········//···291:·bipush··········10 |
| 687 | ········//···293:·istore··········4 |
| 688 | ········//···295:·goto············465 |
| 689 | ········//···298:·ldc_w···········"create_delete_request" |
| 690 | ········//···301:·astore··········11 |
| 691 | ········//···303:·aload_1········ |
| 692 | ········//···304:·aload···········11 |
| 693 | ········//···306:·invokevirtual···java/lang/String.equals:(Ljava/lang/Object;)Z |
| 694 | ········//···309:·istore··········4 |
| 695 | ········//···311:·iload···········4 |
| 696 | ········//···313:·ifeq············461 |
| 697 | ········//···316:·bipush··········12 |
| 698 | ········//···318:·istore··········4 |
| 699 | ········//···320:·goto············465 |
| 700 | ········//···323:·ldc_w···········"get_generation" |
| 701 | ········//···326:·astore··········11 |
| 702 | ········//···328:·aload_1········ |
| 703 | ········//···329:·aload···········11 |
| 704 | ········//···331:·invokevirtual···java/lang/String.equals:(Ljava/lang/Object;)Z |
| 705 | ········//···334:·istore··········4 |
| 706 | ········//···336:·iload···········4 |
| 707 | ········//···338:·ifeq············461 |
| 708 | ········//···341:·bipush··········6 |
| 709 | ········//···343:·istore··········4 |
| 710 | ········//···345:·goto············465 |
| 711 | ········//···348:·ldc_w···········"get_document_uri" |
| 712 | ········//···351:·astore··········11 |
| 713 | ········//···353:·aload_1········ |
| 714 | ········//···354:·aload···········11 |
| 715 | ········//···356:·invokevirtual···java/lang/String.equals:(Ljava/lang/Object;)Z |
| 716 | ········//···359:·istore··········4 |
| 717 | ········//···361:·iload···········4 |
| 718 | ········//···363:·ifeq············461 |
| 719 | ········//···366:·bipush··········7 |
| 720 | ········//···368:·istore··········4 |
| 721 | ········//···370:·goto············465 |
| 722 | ········//···373:·ldc_w···········"wait_for_idle" |
| 723 | ········//···376:·astore··········11 |
| 724 | ········//···378:·aload_1········ |
| 725 | ········//···379:·aload···········11 |
| 726 | ········//···381:·invokevirtual···java/lang/String.equals:(Ljava/lang/Object;)Z |
| 727 | ········//···384:·istore··········4 |
| 728 | ········//···386:·iload···········4 |
| 729 | ········//···388:·ifeq············461 |
| 730 | ········//···391:·iload···········8 |
| 731 | ········//···393:·istore··········4 |
| 732 | ········//···395:·goto············465 |
| 733 | ········//···398:·ldc_w···········"get_media_uri" |
| 734 | ········//···401:·astore··········11 |
| 735 | ········//···403:·aload_1········ |
| 736 | ········//···404:·aload···········11 |
| 737 | ········//···406:·invokevirtual···java/lang/String.equals:(Ljava/lang/Object;)Z |
| 738 | ········//···409:·istore··········4 |
| 739 | ········//···411:·iload···········4 |
| 740 | ········//···413:·ifeq············461 |
| 741 | ········//···416:·bipush··········8 |
| 742 | ········//···418:·istore··········4 |
| 743 | ········//···420:·goto············465 |
| 744 | ········//···423:·aload_1········ |
| 745 | ········//···424:·aload···········5 |
| 746 | ········//···426:·invokevirtual···java/lang/String.equals:(Ljava/lang/Object;)Z |
| 747 | ········//···429:·istore··········4 |
| 748 | ········//···431:·iload···········4 |
| 749 | ········//···433:·ifeq············461 |
| 750 | ········//···436:·iconst_4······· |
| 751 | ········//···437:·istore··········4 |
| 752 | ········//···439:·goto············465 |
| 753 | ········//···442:·aload_1········ |
| 754 | ········//···443:·aload···········6 |
| 755 | ········//···445:·invokevirtual···java/lang/String.equals:(Ljava/lang/Object;)Z |
| 756 | ········//···448:·istore··········4 |
| 757 | ········//···450:·iload···········4 |
| 758 | ········//···452:·ifeq············461 |
| 759 | ········//···455:·iconst_3······· |
| 760 | ········//···456:·istore··········4 |
| 761 | ········//···458:·goto············465 |
| 762 | ········//···461:·iload···········7 |
| 763 | ········//···463:·istore··········4 |
| 764 | ········//···465:·ldc_w···········"com.android.externalstorage.documents" |
| 765 | ········//···468:·astore··········12 |
| 766 | ········//···470:·ldc_w···········"MediaProvider" |
| 767 | ········//···473:·astore··········13 |
| 768 | ········//···475:·ldc_w···········"android.intent.extra.TEXT" |
| 769 | ········//···478:·astore··········14 |
| 770 | ········//···480:·ldc_w···········"uri" |
| 771 | ········//···483:·astore··········15 |
| 772 | ········//···485:·iload···········4 |
| 773 | ········//···487:·tableswitch·{ |
| 774 | ········//················0:·1300 |
| 775 | ········//················1:·1240 |
| 776 | ········//················2:·1232 |
| 777 | ········//················3:·1041 |
| 778 | ········//················4:·1041 |
| 779 | ········//················5:·989 |
| 780 | ········//················6:·931 |
| 781 | ········//················7:·792 |
| 782 | ········//················8:·615 |
| 783 | ········//················9:·590 |
| 784 | ········//···············10:·590 |
| 785 | ········//···············11:·590 |
| 786 | ········//···············12:·590 |
| 787 | ········//··········default:·552 |
| 788 | ········//········} |
| 789 | ········//···552:·new·············Ljava/lang/UnsupportedOperationException; |
| 790 | ········//···555:·astore_0······· |
| 791 | ········//···556:·new·············Ljava/lang/StringBuilder; |
| 792 | ········//···559:·astore_2······· |
| 793 | ········//···560:·aload_2········ |
| 794 | ········//···561:·invokespecial···java/lang/StringBuilder.<init>:()V |
| 795 | ········//···564:·aload_2········ |
| 796 | ········//···565:·ldc_w···········"Unsupported·call:·" |
| 797 | ········//···568:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; |
| 798 | ········//···571:·pop············ |
| 799 | ········//···572:·aload_2········ |
| 800 | ········//···573:·aload_1········ |
| 801 | ········//···574:·invokevirtual···java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; |
| 802 | ········//···577:·pop············ |
| 803 | ········//···578:·aload_2········ |
| 804 | ········//···579:·invokevirtual···java/lang/StringBuilder.toString:()Ljava/lang/String; |
| 805 | ········//···582:·astore_1······· |
| 806 | ········//···583:·aload_0········ |
| 807 | ········//···584:·aload_1········ |
| 808 | ········//···585:·invokespecial···java/lang/UnsupportedOperationException.<init>:(Ljava/lang/String;)V |
| 809 | ········//···588:·aload_0········ |
| 810 | ········//···589:·athrow········· |
| 811 | ········//···590:·aload_0········ |
| 812 | ········//···591:·aload_1········ |
| 813 | ········//···592:·aload_3········ |
| 814 | ········//···593:·invokespecial···com/android/providers/media/MediaProvider.createRequest:(Ljava/lang/String;Landroid/os/Bundle;)Landroid/app/PendingIntent; |
| 815 | ········//···596:·astore_0······· |
| 816 | ········//···597:·new·············Landroid/os/Bundle; |
| 817 | ········//···600:·astore_1······· |
| 818 | ········//···601:·aload_1········ |
| 819 | ········//···602:·invokespecial···android/os/Bundle.<init>:()V |
| 820 | ········//···605:·aload_1········ |
| 821 | ········//···606:·ldc_w···········"result" |
| 822 | ········//···609:·aload_0········ |
| 823 | ········//···610:·invokevirtual···android/os/Bundle.putParcelable:(Ljava/lang/String;Landroid/os/Parcelable;)V |
| 824 | ········//···613:·aload_1········ |
| 825 | ········//···614:·areturn········ |
| 826 | ········//···615:·aload_3········ |
| 827 | ········//···616:·aload···········15 |
| 828 | ········//···618:·invokevirtual···android/os/Bundle.getParcelable:(Ljava/lang/String;)Landroid/os/Parcelable; |
| 829 | ········//···621:·checkcast·······Landroid/net/Uri; |
| 830 | ········//···624:·astore_2······· |
| 831 | ········//···625:·aload_0········ |
| 832 | ········//···626:·invokevirtual···android/content/ContentProvider.getContext:()Landroid/content/Context; |
| 833 | ········//···629:·astore··········11 |
| 834 | ········//···631:·aload···········11 |
| 835 | ········//···633:·aload_2········ |
| 836 | ········//···634:·iload···········9 |
| 837 | ········//···636:·aload···········13 |
| 838 | ········//···638:·invokevirtual···android/content/Context.enforceCallingUriPermission:(Landroid/net/Uri;ILjava/lang/String;)V |
| 839 | ········//···641:·aload_0········ |
| 840 | ········//···642:·invokevirtual···android/content/ContentProvider.getContext:()Landroid/content/Context; |
| 841 | ········//···645:·astore_2······· |
| 842 | ········//···646:·aload_2········ |
| 843 | ········//···647:·invokevirtual···android/content/Context.getContentResolver:()Landroid/content/ContentResolver; |
| 844 | ········//···650:·astore_2······· |
| 845 | ········//···651:·aload_2········ |
| 846 | ········//···652:·aload···········12 |
| 847 | ········//···654:·invokevirtual···android/content/ContentResolver.acquireUnstableContentProviderClient:(Ljava/lang/String;)Landroid/content/ContentProviderClient; |
| 848 | ········//···657:·astore_2······· |
| 849 | ········//···658:·aload_2········ |
| 850 | ········//···659:·aload_1········ |
| 851 | ········//···660:·aconst_null···· |
| 852 | ········//···661:·aload_3········ |
| 853 | ········//···662:·invokevirtual···android/content/ContentProviderClient.call:(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; |
| 854 | ········//···665:·astore_1······· |
| 855 | ········//···666:·aload_1········ |
| 856 | ········//···667:·aload···········15 |
| 857 | ········//···669:·invokevirtual···android/os/Bundle.getParcelable:(Ljava/lang/String;)Landroid/os/Parcelable; |
| 858 | ········//···672:·astore_1······· |
| 859 | ········//···673:·aload_1········ |
| 860 | ········//···674:·checkcast·······Landroid/net/Uri; |
| 861 | ········//···677:·astore_1······· |
| 862 | ········//···678:·aload_2········ |
| 863 | ········//···679:·ifnull··········686 |
| 864 | ········//···682:·aload_2········ |
| 865 | ········//···683:·invokevirtual···android/content/ContentProviderClient.close:()V |
| 866 | ········//···686:·aload_0········ |
| 867 | ········//···687:·invokevirtual···com/android/providers/media/MediaProvider.clearLocalCallingIdentity:()Lcom/android/providers/media/LocalCallingIdentity; |
| 868 | ········//···690:·astore_2······· |
| 869 | ········//···691:·new·············Landroid/os/Bundle; |
| 870 | ········//···694:·astore_3······· |
| 871 | ········//···695:·aload_3········ |
| 872 | ········//···696:·invokespecial···android/os/Bundle.<init>:()V |
| 873 | ········//···699:·new·············Ljava/io/File; |
| 874 | ········//···702:·astore··········11 |
| 875 | ········//···704:·aload_1········ |
| 876 | ········//···705:·invokevirtual···android/net/Uri.getPath:()Ljava/lang/String; |
| 877 | ········//···708:·astore_1······· |
| 878 | ········//···709:·aload···········11 |
| 879 | ········//···711:·aload_1········ |
| 880 | ········//···712:·invokespecial···java/io/File.<init>:(Ljava/lang/String;)V |
| 881 | ········//···715:·aload_0········ |
| 882 | ········//···716:·aload···········11 |
| 883 | ········//···718:·aconst_null···· |
| 884 | ········//···719:·invokevirtual···com/android/providers/media/MediaProvider.queryForMediaUri:(Ljava/io/File;Landroid/os/CancellationSignal;)Landroid/net/Uri; |
| 885 | ········//···722:·astore_1······· |
| 886 | ········//···723:·aload_3········ |
| 887 | ········//···724:·aload···········15 |
| 888 | ········//···726:·aload_1········ |
| 889 | ········//···727:·invokevirtual···android/os/Bundle.putParcelable:(Ljava/lang/String;Landroid/os/Parcelable;)V |
| 890 | ········//···730:·aload_0········ |
| 891 | ········//···731:·aload_2········ |
| 892 | ········//···732:·invokevirtual···com/android/providers/media/MediaProvider.restoreLocalCallingIdentity:(Lcom/android/providers/media/LocalCallingIdentity;)V |
| 893 | ········//···735:·aload_3········ |
| 894 | ········//···736:·areturn········ |
| 895 | ········//···737:·astore_1······· |
| 896 | ········//···738:·goto············753 |
| 897 | ········//···741:·astore_1······· |
| 898 | ········//···742:·new·············Ljava/lang/IllegalArgumentException; |
| 899 | ········//···745:·astore_3······· |
| 900 | ········//···746:·aload_3········ |
| 901 | ········//···747:·aload_1········ |
| 902 | ········//···748:·invokespecial···java/lang/IllegalArgumentException.<init>:(Ljava/lang/Throwable;)V |
| 903 | ········//···751:·aload_3········ |
| 904 | ········//···752:·athrow········· |
| 905 | ········//···753:·aload_0········ |
| 906 | ········//···754:·aload_2········ |
| 907 | ········//···755:·invokevirtual···com/android/providers/media/MediaProvider.restoreLocalCallingIdentity:(Lcom/android/providers/media/LocalCallingIdentity;)V |
| 908 | ········//···758:·aload_1········ |
| 909 | ········//···759:·athrow········· |
| 910 | ········//···760:·astore_0······· |
| 911 | ········//···761:·aload_2········ |
| 912 | ········//···762:·ifnull··········778 |
| 913 | ········//···765:·aload_2········ |
| 914 | ········//···766:·invokevirtual···android/content/ContentProviderClient.close:()V |
| 915 | ········//···769:·goto············778 |
| 916 | ········//···772:·astore_1······· |
| 917 | ········//···773:·aload_0········ |
| 918 | ········//···774:·aload_1········ |
| 919 | ········//···775:·invokevirtual···java/lang/Throwable.addSuppressed:(Ljava/lang/Throwable;)V |
| 920 | ········//···778:·aload_0········ |
| 921 | ········//···779:·athrow········· |
| 922 | ········//···780:·astore_0······· |
| 923 | ········//···781:·new·············Ljava/lang/IllegalStateException; |
| 924 | ········//···784:·astore_1······· |
| 925 | ········//···785:·aload_1········ |
| 926 | ········//···786:·aload_0········ |
| 927 | ········//···787:·invokespecial···java/lang/IllegalStateException.<init>:(Ljava/lang/Throwable;)V |
| 928 | ········//···790:·aload_1········ |
| 929 | ········//···791:·athrow········· |
| 930 | ········//···792:·aload_3········ |
| 931 | ········//···793:·aload···········15 |
| 932 | ········//···795:·invokevirtual···android/os/Bundle.getParcelable:(Ljava/lang/String;)Landroid/os/Parcelable; |
| 933 | ········//···798:·checkcast·······Landroid/net/Uri; |
| 934 | ········//···801:·astore_2······· |
| 935 | ········//···802:·aload_0········ |
| 936 | ········//···803:·aload_2········ |
| 937 | ········//···804:·aload_3········ |
| 938 | ········//···805:·iconst_0······· |
| 939 | ········//···806:·invokespecial···com/android/providers/media/MediaProvider.enforceCallingPermission:(Landroid/net/Uri;Landroid/os/Bundle;Z)V |
| 940 | ········//···809:·aload_0········ |
| 941 | ········//···810:·invokevirtual···com/android/providers/media/MediaProvider.clearLocalCallingIdentity:()Lcom/android/providers/media/LocalCallingIdentity; |
| 942 | ········//···813:·astore··········11 |
| 943 | ········//···815:·aload_0········ |
| 944 | ········//···816:·aload_2········ |
| 945 | ········//···817:·aconst_null···· |
| 946 | ········//···818:·invokevirtual···com/android/providers/media/MediaProvider.queryForDataFile:(Landroid/net/Uri;Landroid/os/CancellationSignal;)Ljava/io/File; |
| 947 | ········//···821:·astore_2······· |
| 948 | ········//···822:·aload_2········ |
| 949 | ········//···823:·invokestatic····android/net/Uri.fromFile:(Ljava/io/File;)Landroid/net/Uri; |
| 950 | ········//···826:·astore_2······· |
| 951 | ········//···827:·aload_0········ |
| 952 | ········//···828:·aload···········11 |
| 953 | ········//···830:·invokevirtual···com/android/providers/media/MediaProvider.restoreLocalCallingIdentity:(Lcom/android/providers/media/LocalCallingIdentity;)V |
| 954 | ········//···833:·aload_0········ |
| 955 | ········//···834:·invokevirtual···android/content/ContentProvider.getContext:()Landroid/content/Context; |
| 956 | ········//···837:·astore_0······· |
| 957 | ········//···838:·aload_0········ |
| 958 | ········//···839:·invokevirtual···android/content/Context.getContentResolver:()Landroid/content/ContentResolver; |
| 959 | ········//···842:·astore_0······· |
| 960 | ········//···843:·aload_0········ |
| 961 | ········//···844:·aload···········12 |
| 962 | ········//···846:·invokevirtual···android/content/ContentResolver.acquireUnstableContentProviderClient:(Ljava/lang/String;)Landroid/content/ContentProviderClient; |
| 963 | ········//···849:·astore_0······· |
| 964 | ········//···850:·aload_3········ |
| 965 | ········//···851:·aload···········15 |
| 966 | ········//···853:·aload_2········ |
| 967 | ········//···854:·invokevirtual···android/os/Bundle.putParcelable:(Ljava/lang/String;Landroid/os/Parcelable;)V |
| 968 | ········//···857:·aload_0········ |
| 969 | ········//···858:·aload_1········ |
| 970 | ········//···859:·aconst_null···· |
| 971 | ········//···860:·aload_3········ |
| 972 | ········//···861:·invokevirtual···android/content/ContentProviderClient.call:(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; |
| 973 | ········//···864:·astore_1······· |
| 974 | ········//···865:·aload_0········ |
| 975 | ········//···866:·ifnull··········873 |
| 976 | ········//···869:·aload_0········ |
| 977 | ········//···870:·invokevirtual···android/content/ContentProviderClient.close:()V |
| 978 | ········//···873:·aload_1········ |
| 979 | ········//···874:·areturn········ |
| 980 | ········//···875:·astore_1······· |
| 981 | ········//···876:·aload_0········ |
| 982 | ········//···877:·ifnull··········893 |
| 983 | ········//···880:·aload_0········ |
| 984 | ········//···881:·invokevirtual···android/content/ContentProviderClient.close:()V |
| 985 | ········//···884:·goto············893 |
| 986 | ········//···887:·astore_0······· |
| 987 | ········//···888:·aload_1········ |
| 988 | ········//···889:·aload_0········ |
| 989 | ········//···890:·invokevirtual···java/lang/Throwable.addSuppressed:(Ljava/lang/Throwable;)V |
| 990 | ········//···893:·aload_1········ |
| 991 | ········//···894:·athrow········· |
| 992 | ········//···895:·astore_0······· |
| 993 | ········//···896:·new·············Ljava/lang/IllegalStateException; |
| 994 | ········//···899:·astore_1······· |
| 995 | ········//···900:·aload_1········ |
| 996 | ········//···901:·aload_0········ |
| 997 | ········//···902:·invokespecial···java/lang/IllegalStateException.<init>:(Ljava/lang/Throwable;)V |
| 998 | ········//···905:·aload_1········ |
| 999 | ········//···906:·athrow········· |
| 1000 | ········//···907:·astore_1······· |
| 1001 | ········//···908:·goto············923 |
| 1002 | ········//···911:·astore_1······· |
| 1003 | ········//···912:·new·············Ljava/lang/IllegalArgumentException; |
| 1004 | ········//···915:·astore_2······· |
| 1005 | ········//···916:·aload_2········ |
| 1006 | ········//···917:·aload_1········ |
| 1007 | ········//···918:·invokespecial···java/lang/IllegalArgumentException.<init>:(Ljava/lang/Throwable;)V |
| 1008 | ········//···921:·aload_2········ |
| 1009 | ········//···922:·athrow········· |
| 1010 | ········//···923:·aload_0········ |
| 1011 | ········//···924:·aload···········11 |
| 1012 | ········//···926:·invokevirtual···com/android/providers/media/MediaProvider.restoreLocalCallingIdentity:(Lcom/android/providers/media/LocalCallingIdentity;)V |
| 1013 | ········//···929:·aload_1········ |
| 1014 | ········//···930:·athrow········· |
| 1015 | ········//···931:·aload_3········ |
| 1016 | ········//···932:·aload···········14 |
| 1017 | ········//···934:·invokevirtual···android/os/Bundle.getString:(Ljava/lang/String;)Ljava/lang/String; |
| 1018 | ········//···937:·astore_1······· |
| 1019 | ········//···938:·aload_1········ |
| 1020 | ········//···939:·invokestatic····android/provider/MediaStore$Files.getContentUri:(Ljava/lang/String;)Landroid/net/Uri; |
Max diff block lines reached; -1/619291 bytes (-0.00%) of diff not shown.
|