这是我的用例:
我希望在单击按钮时将 JSON 字符串保存在文件中并启动本地通知。当我单击此通知时,我想打开我的文件(以前创建的)以在默认应用程序中显示他的内容。
问题 :
我的函数正在运行以将 JSON 字符串保存在文件中并启动通知(我可以手动查看文件中的字符串)。但是,当我单击通知时,应用程序会打开默认应用程序,但文件是空的。
这是我单击按钮时启动的代码(我还下载了一张图片,但这部分运行正常):
downloadReceipt(): void {
// Listener when I click on the notification
this.notif.on("click", (notif) => {
let type = notif.id == 1 ? "text/*" : "image/png";
this.FileOpener.open(notif.data, type).then((file) => console.log("File opened : ", file)).catch((err) => console.error("Error openening : ", err));
});
const fileTransfer: TransferObject = this.transfer.create();
// Ask to get the anchor
this.dbApi.getAnchorId(this.parameters.path).then((message) => {
console.log("Get anchor ID : ", message);
// Get the content of the anchor
this.woleetApi.getReceipt(message['id']).then((message) => {
let dataStr = JSON.stringify(message['content']);
// Check if the anchor is ready
if (message['content']['extra'] == undefined){
this.dialogs.alert("The receipt is not yet ready")
} else {
// Create and save the file
this.file.createFile(this.file.externalDataDirectory, 'receipt.json', true).then((msg) => {
this.file.writeExistingFile(this.file.externalDataDirectory, 'receipt.json', dataStr).then((msg) => {
// Launch the notification for the receipt
this.notif.schedule({
id: 1,
text: 'Receipt downloaded',
title: 'Download receipt',
data: this.file.externalDataDirectory + 'receipt.json'
});
}).catch((err) => {
console.error("writeExistingFile error :", err);
})
}).catch((err) => {
console.error("CreateFile error :", err);
})
// Download the picture
fileTransfer.download(this.parameters.picture, this.file.externalDataDirectory + 'picture.png').then((entry) => {
console.log("Download complete: " + entry.toURL());
// Launch the notification for the picture
this.notif.schedule({
id: 2,
text: 'Image downloaded',
title: 'Download picture',
data: this.file.externalDataDirectory + 'picture.png'
})
}).catch((err) => console.error("Error during download", err));
}
})
})
}
我在 Android 设备上运行此代码。
任何人都可以帮助我吗?
谢谢