Offset 0, 0 lines modifiedOffset 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.