前沿
废话不说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