javascript - 单击按钮时不会调用 Phonegap android native 功能

标签 javascript android html email cordova

要通过电子邮件共享数据,我已经在 android native 代码中完成了此操作,并且必须调用 hmtl 按钮电子邮件功能的“onClick”。但是这里的Email功能没有启动,甚至在logcat中也没有得到任何错误来纠正这个问题,请帮助我

html文件

 <!DOCTYPE HTML>
     <html>
     <head>
    <link rel="stylesheet" href="index.css" /> 
<script type="text/javascript" charset="utf-8" src="libs/cordova-2.4.0.js">  </script>
<script type="text/javascript" charset="utf-8" src="social.js"></script>
<script type="text/javascript" charset="utf-8" src="Esocial.js"></script>
    <script type="text/javascript" charset="utf-8">

 function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
  }
function onDeviceReady() 
{
 window.SocialShare = new SocialShare(); 
console.log("in onDeviceReady");
 }


function sendEmail()
  {
SocialShare.Email= function(param, successCallback, failCallback) {
    window.SocialShare.email({message:'Email body', subject: "Email Subject"},
        function(msg) {
        alert('Write Some real Text please.');
        },
        function(fail) {  

        }
    );
}
  }   
</script>

 </head>
<body onload="onLoad()">

<button onclick="sendEmail()" id="email">Email send </button>
 </body>
</html>

java代码

  public class SocialShare extends CordovaPlugin{

private String callback;
Context context;
public PluginResult execute(String action, JSONArray args, String callbackId) {
    try
    {
        if( action.equals("startEmailActivity") ) 
        {
            JSONObject obj = args.getJSONObject(0);
            String msg = obj.has("message") ? obj.getString("message") : "";
            String subject = obj.has("subject") ? obj.getString("subject") : "";

            startEmailActivity(msg, subject );
        }


    }
    catch (JSONException e) {
        e.printStackTrace();
        return new PluginResult(PluginResult.Status.JSON_EXCEPTION);
    }


    PluginResult mPlugin = new PluginResult(PluginResult.Status.NO_RESULT);
    mPlugin.setKeepCallback(true);
    this.callback = callbackId;
    return mPlugin;
}



public void startEmailActivity ( String msg, String emailaddress )
{

    GMailSender mailsender = new GMailSender("abc@gmail.com", "xxxxx");

    String[] toArr = { "abc@gmail.com", "abc@gmail.com" };
    mailsender.set_to(toArr);
    mailsender.set_from("sender@gmail.com");
    mailsender.set_subject("This is an email sent using my Mail JavaMail wrapper from an Android device.");
    mailsender.setBody("Email body.");

    try {
        //mailsender.addAttachment("/sdcard/filelocation");

        if (mailsender.send()) {

            Toast.makeText(context,
                    "Email was sent successfully.",
                    Toast.LENGTH_LONG).show();
        } else {

            Toast.makeText(context, "Email was not sent.",
                    Toast.LENGTH_LONG).show();
        }
    } catch (Exception e) {

        Log.e("MailApp", "Could not send email", e);
    }
}
}

在 config.xml 中添加插件

<plugin name="SocialShare" value="com.gmail.plugins.SocialShare"/>

定位输出

08-29 09:56:18.934: D/dalvikvm(2566): GC_FOR_ALLOC freed 35K, 6% free 2475K/2632K,  paused 88ms, total 90ms
08-29 09:56:18.944: I/dalvikvm-heap(2566): Grow heap (frag case) to 3.139MB for 635812-byte allocation
08-29 09:56:19.054: D/dalvikvm(2566): GC_FOR_ALLOC freed 1K, 5% free 3095K/3256K, paused 109ms, total 109ms
08-29 09:56:19.104: D/dalvikvm(2566): GC_CONCURRENT freed <1K, 5% free 3100K/3256K, paused 4ms+11ms, total 50ms
08-29 09:56:19.224: D/JsMessageQueue(2566): Set native->JS mode to 2
08-29 09:56:19.423: D/gralloc_goldfish(2566): Emulator without GPU emulation detected.
08-29 09:56:20.644: D/chromium(2566): Unknown chromium error: -6
08-29 09:56:22.944: D/TilesManager(2566): Starting TG #0, 0x2a2600f8

最佳答案

你在添加 cordova-2.4.0.jar 文件时犯了一个大错误,但你需要添加 cordova-2.4.0.js 文件

你已经完成了

    <script type="text/javascript" charset="utf-8" src="libs/cordova-2.4.0.jar">

你需要替换成

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

关于javascript - 单击按钮时不会调用 Phonegap android native 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18756537/

相关文章:

html - 当缩放浏览器 float 移动时

html - 滚动时如何在导航栏中使用纯CSS更改图像?

javascript - 未捕获的 TypeError : (0 , _reactRouter.withRouter) 在 react-router 2.4.0 中以编程方式导航到路由时不是函数

javascript - 在 Clojurescript 中访问 "this"

Javascript 从具有多个属性的文件输入元素中获取文件数量及其文件名?

java - 为所有 fragment 保持蓝牙服务运行

java - 启动后停用闪屏

android - CSS3 动画不适用于 Android 4.2

javascript - 我想打开一个新选项卡而不是弹出窗口

android - Paypal 与 Ionic 框架的集成不起作用