Loading media/java/android/media/MediaScannerConnection.java +19 −6 Original line number Diff line number Diff line Loading @@ -156,9 +156,7 @@ public class MediaScannerConnection implements ServiceConnection { } BackgroundThread.getExecutor().execute(() -> { final Uri uri = scanFileQuietly(mProvider, new File(path)); if (mClient != null) { mClient.onScanCompleted(path, uri); } runCallBack(mContext, mClient, path, uri); }); } } Loading Loading @@ -187,9 +185,7 @@ public class MediaScannerConnection implements ServiceConnection { .acquireContentProviderClient(MediaStore.AUTHORITY)) { for (String path : paths) { final Uri uri = scanFileQuietly(client, new File(path)); if (callback != null) { callback.onScanCompleted(path, uri); } runCallBack(context, callback, path, uri); } } }); Loading @@ -206,6 +202,23 @@ public class MediaScannerConnection implements ServiceConnection { return uri; } private static void runCallBack(Context context, OnScanCompletedListener callback, String path, Uri uri) { if (callback != null) { // Ignore exceptions from callback to avoid calling app from crashing. // Don't ignore exceptions for apps targeting 'R' or higher. try { callback.onScanCompleted(path, uri); } catch (Throwable e) { if (context.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.R) { throw e; } else { Log.w(TAG, "Ignoring exception from callback for backward compatibility", e); } } } } @Deprecated static class ClientProxy implements MediaScannerConnectionClient { @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.O) Loading Loading
media/java/android/media/MediaScannerConnection.java +19 −6 Original line number Diff line number Diff line Loading @@ -156,9 +156,7 @@ public class MediaScannerConnection implements ServiceConnection { } BackgroundThread.getExecutor().execute(() -> { final Uri uri = scanFileQuietly(mProvider, new File(path)); if (mClient != null) { mClient.onScanCompleted(path, uri); } runCallBack(mContext, mClient, path, uri); }); } } Loading Loading @@ -187,9 +185,7 @@ public class MediaScannerConnection implements ServiceConnection { .acquireContentProviderClient(MediaStore.AUTHORITY)) { for (String path : paths) { final Uri uri = scanFileQuietly(client, new File(path)); if (callback != null) { callback.onScanCompleted(path, uri); } runCallBack(context, callback, path, uri); } } }); Loading @@ -206,6 +202,23 @@ public class MediaScannerConnection implements ServiceConnection { return uri; } private static void runCallBack(Context context, OnScanCompletedListener callback, String path, Uri uri) { if (callback != null) { // Ignore exceptions from callback to avoid calling app from crashing. // Don't ignore exceptions for apps targeting 'R' or higher. try { callback.onScanCompleted(path, uri); } catch (Throwable e) { if (context.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.R) { throw e; } else { Log.w(TAG, "Ignoring exception from callback for backward compatibility", e); } } } } @Deprecated static class ClientProxy implements MediaScannerConnectionClient { @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.O) Loading