Jelajahi Sumber

不复制持久化激活 权限的播放

onecold 9 bulan lalu
induk
melakukan
2441d30bb9

+ 3 - 0
entry/src/main/ets/common/util/MusicTagUtils.ets

@@ -40,6 +40,7 @@ export async function repairAudioMetadata(
   overwrite: boolean = false,
   outputPath: string = ''
 ): Promise<boolean> {
+  inputPath = FileUtil.getFilePath(inputPath)
   // 确保metadata是对象类型
   if (typeof metadata !== 'object' || metadata === null) {
     console.error('元数据参数必须是一个对象');
@@ -203,6 +204,8 @@ export async function changeMusicCover(
   overwrite: boolean = false,
   outputPath: string = ''
 ): Promise<boolean> {
+  inputPath = FileUtil.getFilePath(inputPath)
+  console.info(`onecold changeMusicCover inputPath: ${inputPath} coverImagePath: ${coverImagePath} overwrite: ${overwrite} outputPath: ${outputPath}`);
   // 确定输出路径
   let finalOutputPath: string = '';
   let useTempFile: boolean = false;

+ 1 - 1
entry/src/main/ets/common/util/PermissionUtil.ets

@@ -26,7 +26,6 @@ class PermissionUtil {
           let policies: Array<fileShare.PolicyInfo> = [policyInfo];
           let results = await fileShare.checkPersistentPermission(policies);
           for (let i = 0; i < results.length; i++) {
-            console.log('onecold activatePermission 激活权限成功');
             if (results[i]) {
               let info: fileShare.PolicyInfo = {
                 uri: policies[i].uri,
@@ -34,6 +33,7 @@ class PermissionUtil {
               };
               let policy: Array<fileShare.PolicyInfo> = [info];
               await fileShare.activatePermission(policy);
+              console.log('onecold activatePermission 激活权限成功');
             }
           }
           let fd = fs.openSync(uri);

+ 2 - 1
entry/src/main/ets/view/DeleteComptent.ets

@@ -7,7 +7,7 @@ import PlaylistTable from '../common/util/PlaylistTable';
 import { EventConstants } from '../common/constants/EventConstants';
 import { emitter } from '@kit.BasicServicesKit';
 import { taskpool } from '@kit.ArkTS';
-
+import PermissionUtil from '../common/util/PermissionUtil'
 
 // 批量删除
 @Component
@@ -223,6 +223,7 @@ async function deleteMultipleFiles(
 
         table.deleteData(item, async () => {
           if(isDeleteYuan){
+            await PermissionUtil.activatePermission(item.filePath)
             await FileUtil.unlink(item.filePath)
 
           }

+ 23 - 3
entry/src/main/ets/view/LocalMusic.ets

@@ -100,6 +100,7 @@ import { SongType } from '../common/enums/SongType';
 import { WebdavManager, WebDavAuthInfo as WebDavManagerAuthInfo,
   buildHttpHeadersWithWebDav,
   WebDavAuthItem} from '../common/util/WebdavManager';
+import PermissionUtil from '../common/util/PermissionUtil'
 const TAG = 'LocalMusic';
 
 /**
@@ -6003,11 +6004,14 @@ export struct LocalMusic {
       ToastUtil.showToast('标题不能为空')
       return
     }
-
+    DialogHelper.showLoadingDialog()
+    await PermissionUtil.activatePermission(item.filePath)
+    const tempOutPath = this.currentPath + '/' + item.fileName
+    console.info('onecold tempOutPath ='+tempOutPath)
     //用户更改了封面,那就内嵌下封面
     if(StrUtil.isNotEmpty(this.imagePathStr)){
       const resultCover:boolean = await changeMusicCover(this.context,
-        item.filePath,this.imagePathStr,true);
+        item.filePath,this.imagePathStr,true,tempOutPath);
       this.imagePathStr = ''
       if(resultCover){
         ToastUtil.showToast('内嵌封面成功')
@@ -6036,7 +6040,8 @@ export struct LocalMusic {
       item.filePath,
       this.lyricConStr,
       metadata,
-      true
+      true,
+      tempOutPath
     );
 
     if (result) {
@@ -6048,6 +6053,8 @@ export struct LocalMusic {
           if (success) {
             console.log(" onecold 编辑信息成功,数据库已同步");
             ToastUtil.showToast('内嵌音乐标签成功')
+            // 关闭进度条
+            DialogHelper.closeLoading();
             this.isShowMoreView = false
             this.name = this.titleStr
             if (item.filePath == this.currentSong?.filePath) {
@@ -6079,6 +6086,8 @@ export struct LocalMusic {
 
 
     } else {
+      // 关闭进度条
+      DialogHelper.closeLoading();
       ToastUtil.showToast('内嵌音乐标签失败')
       console.log('onecold 内嵌音乐标签失败');
     }
@@ -11774,6 +11783,17 @@ export struct LocalMusic {
   }
 
   private async play(url: string,startOffset?:number) {
+    console.info('onecold this.url 1= '+url)
+    let hasPermission = await PermissionUtil.activatePermission(url)
+    console.info('onecold this.hasPermission 1= '+hasPermission)
+    if(!url.includes(this.packName)){
+      const file = fs.openSync(url)
+      this.videoUrl = file.path
+      url= this.videoUrl
+    }
+    console.info('onecold this.hasPermission 1= '+hasPermission)
+    console.info('onecold this.videoUrl 1= '+this.videoUrl)
+
     let that = this;
     that.showLoadIng();
     this.isOpenAB = false