文档章节

phoneGap开发android,JS调用android方法/插件

郏高阳
 郏高阳
发布于 2013/07/18 15:35
字数 468
阅读 7937
收藏 15

前沿

废话不说phoneGap是什么不多介绍,官方网站:http://phonegap.com/

phoneGap开发IOS插件教程:http://my.oschina.net/jgy/blog/175643

使用场景

在开放过程中很多会使用到android原生的东西,当然phoneGap也封装了一些,不过那么一点点想开发Android程序还是不够的……我在开发中APP更新就要在JS中触发事件调用android方法传更新的URL过去,使用JAVA更新APP自动打开安装。

方法1:

插件类 Echo.java

public class Echo extends CordovaPlugin{  // 必须继承 CordovaPlugin
    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        Log.e("-------------",action);
        Log.e("-------------",args.toString());
        if (action.equals("echo")) {
            
        }
        return false;
    }
}

MainActivity.java

public class MainActivity extends DroidGap {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.setIntegerProperty("splashscreen", R.drawable.wandapad_splash);
        super.loadUrl("file:///android_asset/www/index.html", 4000);
    }
}

在res/xml中添加类注册

<plugin name="Echo" value="org.apache.cordova.plugin.Echo"/>

JS调用

cordova.exec(callback, function(err) {
        callback('Nothing to echo.');
    }, "Echo", "echo", ['参数']);

方法2:

这个也是我最喜欢的,简单,方便……不多说……上代码

MainActivity.java

public class MainActivity extends DroidGap {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.init();
        appView.getSettings().setJavaScriptEnabled(true);
        appView.addJavascriptInterface(new PluginMethod(this, appView), "SM"); // 注意这里一句
        super.setIntegerProperty("splashscreen", R.drawable.wandapad_splash);
        super.loadUrl("file:///android_asset/www/index.html", 5000);
    }}

PluginMethod.java

package com.example;

import android.util.Log;
import android.webkit.WebView;
import android.widget.Toast;
import com.plugin.UpdateApplication;
import org.apache.cordova.DroidGap;

/**
 * Created with IntelliJ IDEA.
 * User: FakeMr
 * Date: 13-7-15
 * Time: 下午4:12
 * To change this template use File | Settings | File Templates.
 */
public class PluginMethod {
    private WebView webView;
    private DroidGap droidGap;

    public PluginMethod(DroidGap gap, WebView view) {
        webView = view;
        droidGap = gap;
    }

    /**
     * JS调用  用于更新App
     * @param path 更新门店的地址
     */
    public void UpdateApp(final String path) {
        Log.e("---------------", path);  //注意这里日志输出
    }
}

JS使用:

window.SM.UpdateApp('http://192.168.0.1');  // 注意这里的SM.UpdateApp

ERROR:

第二种方法我报错

07-15 08:52:09.035: ERROR/AndroidRuntime(491): FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.MainActivity}: java.lang.NullPointerException

解决方法:

super.init();

最后:以上是本人测试成功后以及经验分享,欢迎吐槽交流!嘎嘎~~~~

作者:FakeMr 郏高阳    ❤犒劳一杯咖啡❤

原文链接:http://my.oschina.net/jgy/blog/145385



© 著作权归作者所有

郏高阳

郏高阳

粉丝 99
博文 153
码字总数 112268
作品 1
黄浦
程序员
私信 提问
加载中

评论(5)

wangjun520y
wangjun520y

引用来自“新手v”的评论

登陆页面用这种方法调用可以,跳转后为啥报has no method
在被调用的方法上面加上“ @JavascriptInterface”
新手v
登陆页面用这种方法调用可以,跳转后为啥报has no method
新手v
使用方法2为啥我用js调用报 has no method
t
tangxin250274419
为什么我用js调的时候报 has no method的错。 跪求回复。。
l
loody
写的很好
PhoneGap 插件简介

一、PhoneGap平台 前不久PhoneGap发布了1.0版本,这为移动开发大家族提供了又一个跨平台的解决方案。开发者只要有JavaScript、CSS3、Html5的基础就可以快速开发移动应用,并且一次开发支持i...

无鸯
2011/09/06
6.7K
2
PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码

按照我一惯得套路,我会先说一点废话。PhoneGap和Cordova什么关系?为什么有的地方叫Cordova而有的地方叫PhoneGap ?PhoneGap是一款HTML5平台,通过它,开发商可以使用HTML、CSS及JavaScript来...

Java编程思想
2014/07/21
0
0
PhoneGap 在 Android 上的插件开发方法介绍

简介: 移动应用开发已经成为软件开发的一个重要方向,但是移动开发面临的一个重要问题就是跨平台的问题。 PhoneGap 作为一个多平台的软件开发框架,提供了一次编写多个平台的运行。目前已经...

IBMdW
2012/04/27
2.9K
0
android phonegap插件开发方法 plugin

android phonegap插件开发方法 plugin 分类: phonegap2014-03-03 22:41 5951人阅读 评论(2) 收藏 举报 androidphonegap插件pluginscordova 此篇文章以cordova 3.4版本编写 phonegap的插件开...

james_laughing
2014/12/17
0
0
PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码

按照我一惯得套路,我会先说一点废话。PhoneGap和Cordova什么关系?为什么有的地方叫Cordova而有的地方叫PhoneGap ?PhoneGap是一款HTML5平台,通过它,开发商可以使用HTML、CSS及JavaScript来...

请叫我高级研发工程师
2013/09/06
0
3

没有更多内容

加载失败,请刷新页面

加载更多

ubuntu或ubuntu kylin优麒麟中安装QQ、wechat微信、百度网盘

从中国国内的地址下载deepin wine,码云上的。这样网速比较快。然后,按照说明向下安装。 https://gitee.com/wszqkzqk/deepin-wine-for-ubuntu...

gugudu
31分钟前
1
0
基于redis分布式锁实现“秒杀”

最近在项目中遇到了类似“秒杀”的业务场景,在本篇博客中,我将用一个非常简单的demo,阐述实现所谓“秒杀”的基本思路。 业务场景 所谓秒杀,从业务角度看,是短时间内多个用户“争抢”资源...

别打我会飞
51分钟前
14
0
Zookeeper的实践指南

本章重点 1.数据存储2.基于Java API初探Zookeeper的使用3.深入分析Watcher机制的实现原理4.Curator客户端的使用,简单高效 数据存储 事务日志快照日志运行时日志 bin/zookeepe...

须臾之余
55分钟前
2
0
MySQL mybatis Point类型数据

MySQL中的point用于表示GIS中的地理坐标,在GIS中广泛使用 如何写入mysql,如下图: CREATE TABLE `test-point` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号', `point` ......

张欢19933
今天
3
0
设计模式-适配器模式

适配器模式 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 这种模式涉及到一个单一的类,该类负责加入...

HOT_POT
今天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部