diff --git a/interfaces/kits/js/file_share/grant_uri_permission.cpp b/interfaces/kits/js/file_share/grant_uri_permission.cpp index 543ddb4c5cc641a7c9db8309056ec79e25872179..3384a071cf611fdca57eda186bb0e39a3cd85f9f 100644 --- a/interfaces/kits/js/file_share/grant_uri_permission.cpp +++ b/interfaces/kits/js/file_share/grant_uri_permission.cpp @@ -30,6 +30,11 @@ using namespace OHOS::DistributedFS::ModuleRemoteUri; namespace OHOS { namespace AppFileService { namespace ModuleFileShare { + enum MediaFileTable { + FileTable = 0, + PhotoTable = 1, + AudioTable = 2, + }; static bool IsAllDigits(string idStr) { @@ -92,6 +97,22 @@ namespace ModuleFileShare { return mode; } + static int32_t GetMediaTypeFromUri(const std::string &uri) + { + if (uri.find(MEDIA_FILE_URI_PHOTO_PREFEX) == 0 || + uri.find(MEDIA_FILE_URI_VIDEO_PREFEX) == 0 || + uri.find(MEDIA_FILE_URI_IMAGE_PREFEX) == 0) { + return MediaFileTable::PhotoTable; + } else if (uri.find(MEDIA_FILE_URI_AUDIO_PREFEX) == 0 || + uri.find(MEDIA_FILE_URI_Audio_PREFEX) == 0) { + return MediaFileTable::AudioTable; + } else if (uri.find(MEDIA_FILE_URI_FILE_PREFEX) == 0) { + return MediaFileTable::FileTable; + } + + return MediaFileTable::FileTable; + } + static napi_value GetJSArgs(napi_env env, const NFuncArg &funcArg, DataShareValuesBucket &valuesBucket) { @@ -137,7 +158,7 @@ namespace ModuleFileShare { } int32_t fileId = stoi(idStr); - int32_t filesType = 0; + int32_t filesType = GetMediaTypeFromUri(string(path.get())); valuesBucket.Put(PERMISSION_FILE_ID, fileId); valuesBucket.Put(PERMISSION_BUNDLE_NAME, string(bundleName.get())); valuesBucket.Put(PERMISSION_MODE, mode); diff --git a/interfaces/kits/js/file_share/grant_uri_permission.h b/interfaces/kits/js/file_share/grant_uri_permission.h index 92f51580249ccb45592e2a50b5c20f87f724d8d2..c9e4d4e513f1a0bbbdfb432087c09f79902cfd89 100644 --- a/interfaces/kits/js/file_share/grant_uri_permission.h +++ b/interfaces/kits/js/file_share/grant_uri_permission.h @@ -34,6 +34,12 @@ const string PERMISSION_BUNDLE_NAME = "bundle_name"; const string PERMISSION_FILE_ID = "file_id"; const string PERMISSION_MODE = "mode"; const string PERMISSION_TABLE_TYPE = "table_type"; +const string MEDIA_FILE_URI_PHOTO_PREFEX = "file://media/Photo/"; +const string MEDIA_FILE_URI_AUDIO_PREFEX = "file://media/Audio/"; +const string MEDIA_FILE_URI_VIDEO_PREFEX = "file://media/video/"; +const string MEDIA_FILE_URI_IMAGE_PREFEX = "file://media/image/"; +const string MEDIA_FILE_URI_FILE_PREFEX = "file://media/file/"; +const string MEDIA_FILE_URI_Audio_PREFEX = "file://media/audio/"; class FileShareGrantToken : public IRemoteBroker { public: