PhoneGap的Andr​​oid原生功能没有得到所谓的按钮点击 [英] Phonegap android native function not getting called on button click

查看:144
本文介绍了PhoneGap的Andr​​oid原生功能没有得到所谓的按钮点击的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

要共享通过电子邮件,我在Android原生code做到了这一点,并在HMTL按钮电子邮件功能的onClick也被称为数据。但这里的电子邮件功能不解雇了,甚至没有得到任何错误的logcat来纠正这个问题,请大家帮我

HTML文件

 <!DOCTYPE HTML>
     < HTML和GT;
     < HEAD>
    <链接rel =stylesheet属性HREF =index.css/>
<脚本类型=文/ JavaScript的字符集=utf-8SRC =库/科尔多瓦,2.4.0.js> < / SCRIPT>
<脚本类型=文/ JavaScript的字符集=utf-8SRC =social.js>< / SCRIPT>
<脚本类型=文/ JavaScript的字符集=utf-8SRC =Esocial.js>< / SCRIPT>
    <脚本类型=文/ JavaScript的字符集=utf-8> 功能的onLoad(){
document.addEventListener(deviceready,onDeviceReady,FALSE);
  }
功能onDeviceReady()
{
 window.SocialShare =新SocialShare();
的console.log(在onDeviceReady);
 }
功能sendEmail()
  {
SocialShare.Email =功能(参数,successCallback,failCallback){
    window.SocialShare.email({消息:电子邮件正文,主题:电子邮件主题},
        功能(MSG){
        警报('写一些真实的文字吧。');
        },
        功能(失败){        }
    );
}
  }
< / SCRIPT> < /头>
<身体的onload =的onLoad()><按钮的onclick =sendEmail()ID =电子邮件>邮件发送< /按钮>
 < /身体GT;
< / HTML>

Java的code

 公共类SocialShare扩展CordovaPlugin {私人字符串回调;
上下文语境;
公共PluginResult执行(串动,JSONArray ARGS,弦乐callbackId){
    尝试
    {
        如果(action.equals(startEmailActivity))
        {
            的JSONObject物镜= args.getJSONObject(0);
            弦乐味精= obj.has(信息)? obj.getString(信息):;
            字符串主题= obj.has(主体)? obj.getString(主体):;            startEmailActivity(味精,学科);
        }
    }
    赶上(JSONException E){
        e.printStackTrace();
        返回新PluginResult(PluginResult.Status.JSON_EXCEPTION);
    }
    PluginResult mPlugin =新PluginResult(PluginResult.Status.NO_RESULT);
    mPlugin.setKeepCallback(真);
    this.callback = callbackId;
    返回mPlugin;
}公共无效startEmailActivity(弦乐味精,字符串EMAILADDRESS)
{    GMailSender mailsender =新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(这是用我的邮件JavaMail的包装从Android设备发送了一封电子邮件。);
    mailsender.setBody(电子邮件正文);    尝试{
        //mailsender.addAttachment(\"/sdcard/filelocation);        如果(mailsender.send()){            Toast.makeText(背景下,
                    电子邮件发送成功。
                    Toast.LENGTH_LONG).show();
        }其他{            Toast.makeText(背景下,邮件无法发送。
                    Toast.LENGTH_LONG).show();
        }
    }赶上(例外五){        Log.e(MailApp,无法发送电子邮件,E);
    }
}
}

插件config.xml中加入

 <插件名称=SocialShareVALUE =com.gmail.plugins.SocialShare/>

LOCAT输出

  9月8日至29日:56:18.934:D / dalvikvm(2566):GC_FOR_ALLOC释放35K,6%免费2475K / 2632K,暂停88ms,90ms的总
9月8日至29日:56:18.944:I / dalvikvm堆(2566):成长堆(frag的情况下),以3.139MB为635812字节分配
9月8日至29日:56:19.054:D / dalvikvm(2566):GC_FOR_ALLOC释放1K,5%的游离3095K / 3256K,暂停109ms,109ms总
9月8日至29日:56:19.104:D / dalvikvm(2566):GC_CONCURRENT释放< 1K,5%的游离3100K / 3256K,暂停4ms的11毫秒+,50ms的总
9月8日至29日:56:19.224:D / JsMessageQueue(2566):设置native-> JS模式2
9月8日至29日:56:19.423:D / gralloc_goldfish(2566):无仿真模拟GPU检测。
9月8日至29日:56:20.644:D /铬(2566):未知的错误铬:-6
9月8日至29日:56:22.944:D / TilesManager(2566):启动TG#0,0x2a2600f8


解决方案

您已经做了很大的错误添加科尔多瓦-2.4.0.jar文件,但您需要添加科尔多瓦,2.4.0.js文件

您已经做了

 <脚本类型=文/ JavaScript的字符集=utf-8SRC =库/科尔多瓦-2.4.0.jar>

您需要更换

 <脚本类型=文/ JavaScript的字符集=utf-8SRC =科尔多瓦-2.4.0.js>

To share the data over Email i had done this in android native code, and on "onClick" of hmtl button email function has to be called. but here the Email function is not fired up, and even did not get any error in logcat to rectify this issue, please help me

html file

 <!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 code

  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);
    }
}
}

plugin added in config.xml

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

locat output

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

解决方案

you have done big mistake to add cordova-2.4.0.jar file but there you need to add cordova-2.4.0.js file

You have done

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

you need to replace with

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

这篇关于PhoneGap的Andr​​oid原生功能没有得到所谓的按钮点击的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆