From 1400382856bc96b7c70b8b8799ec14d72ea3f3e1 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Sun, 17 Mar 2019 13:12:10 -0600 Subject: [PATCH] Wire up getStorageVolume() for synthetic paths. When a getStorageVolume(File) call is for a synthetic path backed by a content:// Uri, translate it and call getStorageVolume(Uri). Bug: 124700423 Test: manual Change-Id: I0f0dc4d5c2205e9d602e4ec2b036fb7822ba1e33 --- core/java/android/os/storage/StorageManager.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java index 27e391423d218..3e60d5119fb91 100644 --- a/core/java/android/os/storage/StorageManager.java +++ b/core/java/android/os/storage/StorageManager.java @@ -16,6 +16,8 @@ package android.os.storage; +import static android.content.ContentResolver.DEPRECATE_DATA_PREFIX; + import android.annotation.BytesLong; import android.annotation.IntDef; import android.annotation.NonNull; @@ -30,6 +32,7 @@ import android.annotation.UnsupportedAppUsage; import android.annotation.WorkerThread; import android.app.Activity; import android.app.ActivityThread; +import android.app.AppGlobals; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; @@ -1139,6 +1142,12 @@ public class StorageManager { if (file == null) { return null; } + final String path = file.getAbsolutePath(); + if (path.startsWith(DEPRECATE_DATA_PREFIX)) { + final Uri uri = ContentResolver.translateDeprecatedDataPath(path); + return AppGlobals.getInitialApplication().getSystemService(StorageManager.class) + .getStorageVolume(uri); + } try { file = file.getCanonicalFile(); } catch (IOException ignored) {