屏幕截图不会发送到钛的电子邮件

时间:2013-03-09 11:33:54

标签: javascript android titanium

我使用下面的代码是http://developer.appcelerator.com/question/135462/save-screenshot-temporarily-then-retrieve-when-ready

提供的接受答案

但是当电子邮件对话框打开时,它会显示一个附加文件,该文件是截图但发送电子邮件后收到的电子邮件中没有附件。这意味着屏幕截图没有发送。

任何人都可以告诉这段代码有什么问题吗?

var win = Ti.UI.createWindow({
    // backgroundColor : '#666666'
    backgroundColor : 'red',
    // backgroundImage : 'img/1.jpg'
});

var btn = Ti.UI.createButton({
    width : 100,
    height : 30,
    title : 'Test'
});

btn.addEventListener('click', function(e) {
    Titanium.Media.takeScreenshot(function(e) {
        var f = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, 'test.png');
        f.write(e.media);

        var emailDialog = Titanium.UI.createEmailDialog();
        emailDialog.setToRecipients(['test@gmail.com']);
        emailDialog.setSubject('test');
        emailDialog.setMessageBody('testing......');
        emailDialog.setHtml(true);
        emailDialog.setBarColor('black');
        emailDialog.addAttachment(f.read());

        emailDialog.addEventListener('complete', function(e) {
            if(e.result == emailDialog.SENT) {

                alert("message was sent");

            }
        });
        emailDialog.open();
    });
});

win.add(btn);

win.open();

1 个答案:

答案 0 :(得分:0)

addAttachment函数可以获取blob,您不必将其保存到磁盘。此外,这可能无法正常工作,因为您可能没有applicationDataDirectory的写入权限。

相反,只需从e.media传递提供的blob:

Titanium.Media.takeScreenshot(function(e) {
    var emailDialog = Titanium.UI.createEmailDialog();
    // Get the supplied blob and attach
    emailDialog.addAttachment(e.media);
    // ...... add other email things here
});