Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3aa4aada authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android (Google) Code Review
Browse files

Merge "Fail silently on MediaScannerConnection#onScanCompleted"

parents 1a2d75eb 364d250f
Loading
Loading
Loading
Loading
+19 −6
Original line number Diff line number Diff line
@@ -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);
            });
        }
    }
@@ -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);
                }
            }
        });
@@ -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)