HarmonyOS 鸿蒙Next 分享文件,调用startAbility,16000050 错误
HarmonyOS 鸿蒙Next 分享文件,调用startAbility,16000050 错误
模拟器中,分享一个txt文件,出现16000050 错误,什么原因?如何排查?
页面如图
代码如下
代码如下
@Preview
@Component
struct FileDemo {
@State
private model: FileDemoViewModel = new FileDemoViewModel(getContext(this) as common.UIAbilityContext)
async aboutToAppear() {
await this.model.reload()
this.model.selected = this.model.items.length > 0 ? this.model.items[0] : ''
}
build() {
Column({ space: 10 }) {
ForEach(this.model.items, (v: string) => {
Row({ space: 10 }) {
Radio({ value: v, group: "file" }).checked(v === this.model.selected).onChange((check) => {
if (check) {
this.model.selected = v
}
})
Text(v).layoutWeight(1)
Button() {
SymbolGlyph($r('sys.symbol.clean'))
}.buttonStyle(ButtonStyleMode.TEXTUAL).padding(10).onClick(() => this.model.handleRemove(v))
}.width("100%").padding(4).alignItems(VerticalAlign.Center).onClick(() => {
this.model.selected = v
})
})
TextArea({ text: $$this.model.content }).height(80)
Button("保存").width("100%").onClick(() => this.model.handleSave(this.model.content))
Button("分享文件").width("100%").onClick(() => this.model.handleShare(this.model.selected))
}.width('100%')
.backgroundColor($r('sys.color.white'))
.padding(12)
.borderRadius(16)
}
}
复制
FileDemoViewModel:
class FileDemoViewModel {
private context: common.UIAbilityContext
private dir: string
// 目录列表
items: string[] = []
selected: string = ""
content: string = ""
constructor(context: common.UIAbilityContext) {
this.context = context
this.dir = this.context.cacheDir + '/demo'
}
async reload() {
const isExist = await fs.access(this.dir, fs.AccessModeType.EXIST)
if (!isExist) {
fs.mkdir(this.dir)
return;
}
this.items = await fs.listFile(this.dir)
console.log("reload", this.items.toString())
}
async handleRemove(v: string) {
await fs.unlink(this.dir + '/' + v)
this.reload()
}
async handleSave(value: string) {
console.log('save', value)
const path = this.dir + `/${new Date().getTime()}.txt`
const file = await fs.open(path, fs.OpenMode.WRITE_ONLY | fs.OpenMode.CREATE)
await fs.write(file.fd, value)
await fs.close(file)
this.content = ""
console.log('save done', path)
this.reload()
}
async handleShare(v: string) {
const path = this.dir + '/' + v
const uri = fileUri.getUriFromPath(path)
console.log('uri', uri)
const want: Want = {
flags: wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION | wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
action: 'ohos.want.action.sendData',
uri: uri,
type: 'text/plain'
}
try {
await this.context.startAbility(want)
console.info('Invoke getCurrentBundleStats succeeded.');
} catch (e) {
console.error(`Invoke startAbility failed, code is ${e.code}, message is ${e.message}`);
}
}
}
2 回复
针对您提到的HarmonyOS 鸿蒙Next分享文件时调用startAbility遇到16000050错误的问题,这通常与内部处理错误相关,可能由内存申请、多线程处理异常等原因引起。具体可能的原因包括内部对象为空、处理超时、包管理获取失败或启动的Ability实例已达到上限等。
为解决这个问题,您可以尝试以下步骤:
- 确认系统内存是否充足,设备使用的系统版本是否存在异常。
- 检查是否启动了过多的Ability,尝试关闭一些不必要的Ability再试。
- 清除系统缓存,确保设备处于良好的运行状态。
- 重启设备,尝试再次进行文件分享操作。
如果以上步骤均未能解决问题,建议您联系官网客服以获取更专业的技术支持。官网地址是:https://www.itying.com/category-93-b0.html。希望这些信息能对您有所帮助。