summaryrefslogtreecommitdiff
path: root/apex
diff options
context:
space:
mode:
author Dipankar Bhardwaj <dipankarb@google.com> 2024-09-29 19:50:56 +0000
committer Dipankar Bhardwaj <dipankarb@google.com> 2025-03-13 16:57:13 +0000
commit9a831d5492fb663b95b49693de14287988ccad30 (patch)
tree7114671cf9b763034b7f092c67b1ad6c8b9e3e65 /apex
parent8361c9359191021054311dd73ff9fb05752e06df (diff)
Add API to bulk update oem_metadata
Created new API to bulk update oem_metadata. This can be done only with UPDATE_OEM_METADATA_PERMISSION which is signature and privileged. Triggering bulk update of oem_metadata column will mark it as null for rows with oem supported mime type till the next idle maintenance run re-fetches the values from OEMMetadataService. Also added support for OEM_METADATA update for a URI using update API. Test: atest OemMetadataServiceTest Bug: 352528913 Change-Id: If2ee9050304ab1f60ca402bf4205a34b58277e76 Flag: com.android.providers.media.flags.enable_oem_metadata_update
Diffstat (limited to 'apex')
-rw-r--r--apex/framework/api/system-current.txt2
-rw-r--r--apex/framework/java/android/provider/MediaStore.java35
2 files changed, 37 insertions, 0 deletions
diff --git a/apex/framework/api/system-current.txt b/apex/framework/api/system-current.txt
index 1d11267f4..f002605a1 100644
--- a/apex/framework/api/system-current.txt
+++ b/apex/framework/api/system-current.txt
@@ -64,6 +64,7 @@ package android.provider {
}
public final class MediaStore {
+ method @FlaggedApi("com.android.providers.media.flags.enable_oem_metadata_update") public static void bulkUpdateOemMetadataInNextScan(@NonNull android.content.Context);
method @NonNull public static android.net.Uri rewriteToLegacy(@NonNull android.net.Uri);
method @NonNull @WorkerThread public static android.net.Uri scanFile(@NonNull android.content.ContentResolver, @NonNull java.io.File);
method @WorkerThread public static void scanVolume(@NonNull android.content.ContentResolver, @NonNull String);
@@ -72,6 +73,7 @@ package android.provider {
field public static final String AUTHORITY_LEGACY = "media_legacy";
field @NonNull public static final android.net.Uri AUTHORITY_LEGACY_URI;
field public static final String QUERY_ARG_DEFER_SCAN = "android:query-arg-defer-scan";
+ field @FlaggedApi("com.android.providers.media.flags.enable_oem_metadata_update") public static final String UPDATE_OEM_METADATA_PERMISSION = "com.android.providers.media.permission.UPDATE_OEM_METADATA";
}
@FlaggedApi("com.android.providers.media.flags.enable_oem_metadata") public abstract class OemMetadataService extends android.app.Service {
diff --git a/apex/framework/java/android/provider/MediaStore.java b/apex/framework/java/android/provider/MediaStore.java
index c9ee81196..1e64cbd4e 100644
--- a/apex/framework/java/android/provider/MediaStore.java
+++ b/apex/framework/java/android/provider/MediaStore.java
@@ -304,6 +304,9 @@ public final class MediaStore {
"revoke_all_media_grants_for_package";
/** @hide */
+ public static final String BULK_UPDATE_OEM_METADATA_CALL = "bulk_update_oem_metadata";
+
+ /** @hide */
public static final String OPEN_FILE_CALL =
"open_file_call";
@@ -1342,6 +1345,16 @@ public final class MediaStore {
public static final String ACCESS_OEM_METADATA_PERMISSION =
"com.android.providers.media.permission.ACCESS_OEM_METADATA";
+ /**
+ * Permission that grants ability to trigger update of {@link MediaColumns#OEM_METADATA}.
+ *
+ * @hide
+ */
+ @FlaggedApi(Flags.FLAG_ENABLE_OEM_METADATA_UPDATE)
+ @SystemApi
+ public static final String UPDATE_OEM_METADATA_PERMISSION =
+ "com.android.providers.media.permission.UPDATE_OEM_METADATA";
+
/** @hide */
@IntDef(flag = true, prefix = { "MATCH_" }, value = {
MATCH_DEFAULT,
@@ -5734,4 +5747,26 @@ public final class MediaStore {
throw e.rethrowAsRuntimeException();
}
}
+
+ /**
+ * Allows bulk update of {@link MediaColumns#OEM_METADATA} column in next scan.
+ * Requires calling package to hold {@link UPDATE_OEM_METADATA_PERMISSION} permission. Updates
+ * {@link MediaColumns#OEM_METADATA} to NULL for OEM supported media files and re-fetch
+ * the latest values in the next scan.
+ * Caller can enforce file/volume scan after this to update MediaStore with the latest OEM
+ * metadata. If not done, next scan by MediaStore will fetch and update the latest data.
+ *
+ * @hide
+ */
+ @FlaggedApi(Flags.FLAG_ENABLE_OEM_METADATA_UPDATE)
+ @SystemApi
+ public static void bulkUpdateOemMetadataInNextScan(@NonNull Context context) {
+ final ContentResolver resolver = context.getContentResolver();
+ try (ContentProviderClient client = resolver.acquireContentProviderClient(AUTHORITY)) {
+ final Bundle extras = new Bundle();
+ client.call(BULK_UPDATE_OEM_METADATA_CALL, /* arg= */ null, /* extras= */ extras);
+ } catch (RemoteException e) {
+ throw e.rethrowAsRuntimeException();
+ }
+ }
}