| | | | |
| 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.
|