1

私は以下のコードを使用しました。それは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();
4

1 に答える 1

0

addAttachment関数はblobを取ることができ、ディスクに保存する必要はありません。また、への書き込みアクセス権がない可能性があるため、これが機能していない可能性がありますapplicationDataDirectory

代わりに、提供されたBLOBを次のe.mediaように渡します。

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
});
于 2013-03-09T15:42:58.727 に答える