HarmonyOS鸿蒙Next 4.2.0中LivePhotoKit调用LivePhotoInfo(String key, boolean isUri, Context context)拿不到视频信息

HarmonyOS鸿蒙Next 4.2.0中LivePhotoKit调用LivePhotoInfo(String key, boolean isUri, Context context)拿不到视频信息 文档:https://developer.huawei.com/consumer/cn/doc/media-guides/camerakit-sdk-livephoto-2024101001

P40 pro, HarmonyOS 4.2.0

LivePhotoInfo(String key, boolean isUri, Context context)获取LivePhoto视频信息报
ClassNotFoundException("LivePhoto class not found"); 是不支持此系统还是需要什么其他操作

更多关于HarmonyOS鸿蒙Next 4.2.0中LivePhotoKit调用LivePhotoInfo(String key, boolean isUri, Context context)拿不到视频信息的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

根据您描述的问题,在HarmonyOS 4.2.0上调用LivePhotoInfo出现ClassNotFoundException,以下是详细分析和解决方案:

----问题原因

1.版本兼容性问题

LivePhotoKit是HarmonyOS 5.0.0+(API 10)新增的Kit,4.2.0版本(API 9)尚未支持该功能。系统底层缺少相关类定义导致ClassNotFoundException。

2.依赖缺失

即使系统版本支持,若未在项目中正确声明Kit依赖,也会触发该错误。

----解决方案

  1. 升级系统或调整兼容性

推荐方案:将设备升级至HarmonyOS 5.0.0+(如P40 Pro支持的5.0.0.300版本)。

在entry/build-profile.json5中确认API兼容性:

"compatibleSdkVersion": "10.0.0" // 必须≥10.0.0

  2. 添加Kit依赖

在模块的oh-package.json5中声明依赖:

"dependencies": {
  "@kit.LivePhotoKit": "1.0.0"  // 确保版本≥1.0.0
}

  3. 替代方案(4.2.0兼容)若无法升级系统,使用MediaLibrary获取视频信息:

import mediaLibrary from '@ohos.multimedia.mediaLibrary';

async function getVideoInfo(key: string) {
  const media = mediaLibrary.getMediaLibrary();
  const fileKey = mediaLibrary.FileKey.VIDEO_PATH; // 根据实际Key调整
  const selection = `${fileKey} = ?`;
  const args = [key];

  const fetchOp = {
    selections: selection,
    selectionArgs: args,
  };

  const files = await media.getFileAssets(fetchOp);
  if (files.length > 0) {
    const video = await files;
    console.log(`视频URI: ${video.uri}`);
  }
}

----注意事项

  1.权限声明:在module.json5中添加必要权限:

"requestPermissions": [
  {
    "name": "ohos.permission.READ_MEDIA"
  }
]

  2.设备验证:调用前需通过canIUse检测功能支持性:

import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
const atManager = abilityAccessCtrl.createAtManager();
try {
  atManager.requestPermissionsFromUser(['ohos.permission.READ_MEDIA']);
} catch (err) {
  console.error("权限请求失败");
}

*关键结论:LivePhotoKit在4.2.0不可用,请按上述方案升级系统或改用MediaLibrary接口

更多关于HarmonyOS鸿蒙Next 4.2.0中LivePhotoKit调用LivePhotoInfo(String key, boolean isUri, Context context)拿不到视频信息的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next 4.2.0中,LivePhotoKit的LivePhotoInfo构造函数无法获取视频信息,可能是由于以下原因:

  1. 参数传递问题key参数可能不正确,或isUri标志与实际资源类型不匹配。
  2. 权限配置:应用可能缺少必要的媒体文件访问权限。
  3. 资源路径:指定的URI或文件路径可能无法正确解析或访问。
  4. API兼容性:当前版本可能存在已知问题或限制。

请检查参数、权限和资源路径,并参考官方API文档确认使用方法。

在HarmonyOS Next 4.2.0中,LivePhotoKitLivePhotoInfo(String key, boolean isUri, Context context)构造函数抛出ClassNotFoundException,通常是由于以下原因:

  1. SDK版本不匹配:确保你的开发环境使用的是与HarmonyOS Next 4.2.0兼容的LivePhotoKit SDK版本。旧版SDK可能不支持新系统。

  2. 依赖未正确引入:检查build.gradle文件中是否已正确添加LivePhotoKit依赖:

    dependencies {
        implementation 'com.huawei.hms:livephotokit:版本号'
    }
    

    版本号需替换为适配HarmonyOS Next的最新版本。

  3. 权限问题:访问媒体文件需要声明存储权限。在config.json中添加:

    "reqPermissions": [
      {
        "name": "ohos.permission.READ_MEDIA"
      }
    ]
    
  4. URI路径问题:如果isUritrue,确保key参数是有效的Uri字符串(如dataability://...)。对于非URI路径,isUri应设为false

  5. 资源不存在:确认key对应的LivePhoto资源在设备上确实存在,且可访问。

  6. API变更:HarmonyOS Next可能对API进行了调整。建议查阅最新版本文档,确认LivePhotoInfo的构造函数是否已有更新。

建议按以上步骤排查,重点检查SDK版本和依赖配置。

回到顶部