Phonegap - 动态邮件附件

时间:2013-09-26 12:14:20

标签: javascript android html cordova

我正在创建一个phonegap应用程序,用户将捕获一些图片并将其附加到预定义的邮件ID。我能够捕获图像,但无法附加应用程序文件夹中的所有图片,即“/ mnt / sdcard / Android / data / pacakgename / cache /".

我尝试在this中实施动态附件。

我的代码如下:

<html>
<head>
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" charset="utf-8" src="emailcomposer.js"></script>

    <script type="text/javascript">
    document.addEventListener("deviceready", deviceready, true);
    function deviceready() {
        console.log("Device ready");    
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, onFail);
    }

function gotFS(fileSystem) {
var reader = fileSystem.root.createReader();
reader.readEntries(gotList, onFail);
}

function gotList(entries) {
var i;
var fullPath = "/mnt/sdcard/Android/data/packagename/cache/";
for (i=0; i<entries.length; i++) {
    if (entries[i].name.indexOf(".jpg") != -1) {
        console(entries[i].fullPath);
    }
}
}

    function composeText(){
    var message1 = document.getElementById('message_body').value;
    console.log(message1);
    window.plugins.emailComposer.showEmailComposer(
            "Get an Estimate",
            message1,
            ["sth@mail.com"],
            [],
            [],
            true,
            [attachment link]
        );
    //exit the app after clicking this button
    navigator.app.exitApp();
    // navigator.camera.cleanup(onSuccess,fail);
    // function onSuccess(){

    // }

    // function fail(){

    // }

    }

    function onFail(message) {
  alert('Failed because: ' + message);
}

    </script>
    <style type="text/css">
li{
list-style: none;
float:left;
padding: 0 5 5 0 ;
}
    </style>
</head>
<body>
    <h1>Get a Repair Estimate</h1>

<div style="clear:both;"></div>
Provide any details you want us to know(Optional):
<ul>
    <li>
<textarea style="width:250px;height:250px;" name="message_body" id = 'message_body'  placeholder="Add Notes here(if any)"></textarea>
</li>
<div style="clear:both;"></div>
<li>

      <button onclick="composeText();">Get Your Estimate</button>
    </li>
</body>
</html>

任何帮助。

1 个答案:

答案 0 :(得分:1)

我得到了解决方案。我无法理解phonegap的fileDirectory api给我带来了麻烦。 我用以下代码解决了我的问题:

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
                    fileSystem.root.getDirectory("MyAppFolder", {
                        create: true
                    }, 
        function(directory) {
            console.log("Final 63" + directory.fullPath);
            attachPaths = directory.fullPath;
            var attachPath=attachPaths.slice(7,attachPaths.length);
            var directoryReader = directory.createReader();
            directoryReader.readEntries(function(entries) {
                var i;
                for (i=0; i<entries.length; i++) {
                    console.log(entries[i].name);
attachFile[i] =attachPath + "/" + entries[i].name;
                            }
                            console.log(attachFile);
                        }, 
                        function (error) {
                            alert(error.code);
                        });

                    });
                }, function(error) {
                    alert("can't even get the file system: " + error.code);
                });

现在,我们可以将attachFile传递给emailcomposer插件:

window.plugins.emailComposer.showEmailComposerWithCallback(null,
                    "Get an Estimate",
                     "Here is the mail body"
                    ["to"],
                    [cc],
                    [bcc],
                    true,
                    attachFile
                    );

我已经解决了。关于我的完整答案,请仔细阅读link。我发布了我的答案,因为我不想将它解决。 我用过这个emailcomposer plugin 希望,这可能有助于某人。