您的位置:首页 > 移动开发 > Android开发

Cordova4.3.1 android 自定义插件(显示土司Toast)

2014-06-11 16:12 295 查看
自定义插件步骤:

1,自定义Toast插件类

package com.hl.hello.myPlugin;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaInterface;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;
/**
 * 显示土司插件
 * @author yuhailong
 *
 */
public class Toast extends CordovaPlugin {</p><p>
 @Override
 public boolean execute(String action, JSONArray args,
   CallbackContext callbackContext) throws JSONException {
  if("showToast".equals(action)){
   showToast(args.getString(0), args.getInt(1));
  }
  
  callbackContext.success();
  return true;
 }</p><p> private void showToast(String text,int type){
  CordovaInterface cordova = this.cordova;
  if(type==1){
   android.widget.Toast.makeText(cordova.getActivity(), text, 1).show();
  }else{
   android.widget.Toast.makeText(cordova.getActivity(), text, 0).show();
  }
 }
 
}
</p>

2,在res/xml/config.xml文件中增加插件配置

 <feature name="WebToast">
        <param name="android-package" value="com.hl.hello.myPlugin.Toast"/>
 </feature>


3,在asserts/www/plugins/目录下插件自己的插件js文件

如:asserts/www/plugins/com.hl.hello.myPlugin/toast.js

<p>cordova.define("com.hl.hello.myPlugin.Toast", function(require, exports, module) { /*
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   <a target=_blank href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
*/</p><p>var exec = require('cordova/exec');</p><p>/**
 * Provides access to notifications on the device.
 */</p><p>module.exports = {</p><p>   
    /**
     * Causes the device to beep.
     * On Android, the default notification ringtone is played "count" times.
     *
     * @param {Integer} type       The Toast type.
     */
    showToast: function(content,type) {
        exec(null, null, "WebToast", "showToast", [content,type]);
    }
};</p><p>});
</p>


4,添加土司插件js配置信息

在assets/www/cordova_plugins.js文件中添加如下信息:

cordova.define('cordova/plugin_list', function(require, exports, module) {
module.exports = [
    {
        "file": "plugins/org.apache.cordova.geolocation/www/geolocation.js",
        "id": "org.apache.cordova.geolocation.geolocation",
        "clobbers": [
            "navigator.geolocation"
        ]
    },
//增加插件js位置描述及调用对象 ,调用时将通过 navigator.webtoast.showToast()方法显示土司
     <span style="color:#ff6666;">{
        "file": "plugins/com.hl.hello.myPlugin/toast.js",
        "id": "com.hl.hello.myPlugin.Toast",
        "clobbers": [
            "navigator.webtoast"
        ]
    }</span>
];
});


5,代码调用

<p>var myToast = {</p><p> showToast: function(text,type){
  navigator.webtoast.showToast(text,type);
 }
};</p><p>myToast.showToast("你好,我是Toast.",1);</p>


toast.js中的方法解释:

exec(null, null, "WebToast", "showToast", [content,type]);

1,成功回调

2, 失败回调

3,插件名称 在res/xml/config.xml文件中指定

4,方法名称

5,方法参数

Toast.java类中的方法解释:

public boolean execute(String action, JSONArray args, CallbackContext callbackContext)

1,方法名称 对应exec 参数4

2,方法参数集合 对应exec 参数5

3,做回调相关操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: