我对将主要被用来扫描条形码,然后通过电子邮件将CSV文件(.txt)附件的离子的Android/iOS应用工作将所有扫描都包含到通讯组中。此应用程序使用ngCordova +科尔多瓦电子邮件生成器插件(科尔多瓦插件电子邮件作曲家)的电子邮件功能。当启动邮件发送中的Android(6.0.1在Nexus 5),我得到以下控制台错误:
TypeError: $cordovaEmailComposer.isAvailable is not a function
所有其他进程似乎正常工作(如正确的依赖于平台的文件路径生成,附件格式和世代)和ngCordova + Cordova条码扫描器插件(phonegap-plugin-barcodescanner)正常工作。
我也有科尔多瓦电子邮件作曲家v0.8.3总是返回上.isAvailable()在Android的“假”的一些问题,但我成功地解决此使用v0.8.2工作。这两个版本都会出现这个新问题。
请参阅下面有关包含问题代码的Angular服务部分。 scanData
是一项简单的服务,可暂时保存扫描的信息,包括路径和所有扫描的阵列。 processFile
是一个处理所有文件处理的服务(例如保存,加载,删除,动态生成文件名,确定正确的文件路径)。
angular
.module('app')
.factory('emailService', ['$ionicPlatform', '$ionicPopup', '$ionicHistory', '$cordovaEmailComposer', 'scanData', 'processFile', emailService]);
function emailService($ionicPlatform, $ionicPopup, $cordovaEmailComposer, $ionicHistory, scanData, processFile) {
var path = scanData.filePath,
file = scanData.fileName;
var service = {
send: send
};
return service;
//------------------------------
/**
* Send email
*/
function send() {
processFile.save('csv')
.then(function() {
console.info('CSV file saved.');
sendEmail();
}, function (error) {
console.error(error);
//TODO: handle failed save attempt
});
}
/**
* Invoke cordova email composer to open email client and create pre-defined draft with attachment.
*/
function sendEmail() {
console.info('Sending email...');
$ionicPlatform.ready(function() {
$cordovaEmailComposer
.isAvailable() //ERROR OCCURS HERE
.then(function() {
console.info('Email app available.');
var attachmentPath = getAttachmentPath();
console.info('Attachment path: ' + attachmentPath);
var email = {
to: '[email protected]',
attachments: [ attachmentPath ],
subject: 'Incoming Scan',
body: 'See attached.'
};
$cordovaEmailComposer
.open(email)
.then(null, function() {
clearDataPopup();
});
}, function() {
console.warn('Email app not available.');
});
});
}
而且,所有组件/依赖是先进的日期,我已经运行ionic state reset
没有变化。我还没有机会在iOS上进行测试,但只要我能这样做就会更新问题。 Android是目前最重要的平台,所以我现在关注它。
这很可能只是我忽略的一些愚蠢的小东西,但我目前处于亏损状态。
你,先生的参考,是正确的。非常感谢你的支持! – ankur
@ankur很高兴知道..谢谢:-) –