HarmonyOS鸿蒙Next中从图库读取数据报内部错误
HarmonyOS鸿蒙Next中从图库读取数据报内部错误 从图库读取数据报内部错误
getDefaultAlbums(context: common.UIAbilityContext): Promise<photoAccessHelper.Album> {
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
predicates.in('album_name', ['aaa', 'bbb']);
let fetchOptions: photoAccessHelper.FetchOptions = {
fetchColumns: [],
predicates: predicates
};
const albums = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.ANY, fetchOptions);
if (albums.getCount() > 0) {
const albumData = await albums.getFirstObject();
return albumData;
}
更多关于HarmonyOS鸿蒙Next中从图库读取数据报内部错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html
如果不申请权限会报错140000011,加了权限就可以(ohos.permission.READ_IMAGEVIDEO、ohos.permission.WRITE_IMAGEVIDEO 等权限),然后给个可以获取到相册的Demo:
import { picker } from '@kit.CoreFileKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { photoAccessHelper } from '@kit.MediaLibraryKit';
import { dataSharePredicates } from '@kit.ArkData';
import { abilityAccessCtrl, PermissionRequestResult, Permissions } from '@kit.AbilityKit';
@Entry
@Component
struct Index {
@State selectedUri: string = '';
aboutToAppear(): void {
let permissions: Array<Permissions> = [
'ohos.permission.READ_IMAGEVIDEO'
];
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
atManager.requestPermissionsFromUser(getContext(this), permissions).then((data: PermissionRequestResult) => {
let grantStatus: Array<number> = data.authResults;
let length: number = grantStatus.length;
for (let i = 0; i < length; i++) {
if (grantStatus[i] != 0) {
// 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
return;
}
}
console.info(` Success to request permissions from user. authResults is ${grantStatus}.`);
}).catch((err: BusinessError) => {
console.error(` Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);
})
}
async getDefaultAlbums(context: Context) {
try {
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
predicates.in(photoAccessHelper.AlbumKeys.ALBUM_NAME, ['test', '我的']);
let fetchOptions: photoAccessHelper.FetchOptions = {
fetchColumns: [],
predicates: predicates
};
const albums = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.ANY, fetchOptions);
if (albums.getCount() > 0) {
const albumData = await albums.getFirstObject();
console.debug('获取相册成功:' + albumData.albumName)
//return albumData;
} else {
console.debug('获取相册失败:')
//throw new Error('相册不存在')
//return albumData;
}
} catch (error) {
console.error('getAlbums fail' + JSON.stringify(error))
}
}
build() {
Column() {
Image(this.selectedUri)
.width('100%')
.height(600)
Button("选择相册").width(150).height(35).margin(8)
.onClick(() => {
this.getDefaultAlbums(getContext(this))
})
}
}
}
更多关于HarmonyOS鸿蒙Next中从图库读取数据报内部错误的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,从图库读取数据报内部错误可能是由于以下原因:
-
权限问题:应用可能未正确申请或获取访问图库所需的权限。确保应用在
config.json中声明了ohos.permission.READ_MEDIA权限,并在运行时请求用户授权。 -
URI解析错误:读取图库数据时,URI可能未正确解析或格式不符合预期。检查URI的生成和解析逻辑,确保其符合系统要求。
-
文件路径问题:图库中的文件路径可能不存在或无法访问。验证文件路径是否正确,并确认文件是否被移动或删除。
-
系统资源限制:系统资源不足可能导致读取操作失败。确保设备有足够的存储空间和内存。
-
API使用错误:可能使用了错误的API或API参数。查阅官方文档,确认API的使用方法和参数是否符合要求。
-
系统版本兼容性:鸿蒙Next的某些API或行为可能与旧版本不同,导致兼容性问题。确保应用适配当前系统版本。
-
数据损坏:图库中的文件可能损坏,导致无法读取。尝试读取其他文件,确认是否为特定文件问题。
-
第三方库冲突:如果使用了第三方库进行图库操作,可能存在库与系统API的冲突。检查第三方库的兼容性和版本。
-
日志分析:通过
HiLog查看详细的错误日志,定位具体错误原因。 -
系统更新问题:系统更新可能导致某些API行为变化。确认系统是否为最新版本,并检查更新日志。
根据错误日志和具体场景,逐一排查上述问题,定位并解决读取图库数据报内部错误的原因。


