phoneGap開發android,JS調用android方法/插件

前沿

廢話不說phoneGap是什麼很少介紹,官方網站:http://phonegap.com/ html

phoneGap開發IOS插件教程:http://my.oschina.net/jgy/blog/175643 java

使用場景

在開放過程當中不少會使用到android原生的東西,固然phoneGap也封裝了一些,不過那麼一點點想開發Android程序仍是不夠的……我在開發中APP更新就要在JS中觸發事件調用android方法傳更新的URL過去,使用JAVA更新APP自動打開安裝。 android

方法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:

這個也是我最喜歡的,簡單,方便……很少說……上代碼 web

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:

第二種方法我報錯 apache

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

解決方法: app

super.init();

最後:以上是本人測試成功後以及經驗分享,歡迎吐槽交流!嘎嘎~~~~ ide

做者:FakeMr 郟高陽    ❤犒勞一杯咖啡❤ 測試

原文連接:http://my.oschina.net/jgy/blog/145385 網站

相關文章
相關標籤/搜索