如何在PhoneGap中创建Toast通知?

17
如何在使用PhoneGap/Cordova的Android应用程序中创建Toast?
谢谢!
3个回答

19

首先创建一个 ToastPlugin.java

package com.company.plugins;

import org.apache.cordova.api.CallbackContext;
import org.apache.cordova.api.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;

import android.util.Log;
import android.widget.Toast;

public class ToastPlugin extends CordovaPlugin {
    @Override
    public boolean execute(String action, JSONArray args,
            CallbackContext callbackContext) throws JSONException {

        String message = args.getString(0);

        // used to log the text and can be seen in LogCat
        Log.d("Toast Plugin", "Calling the Toast...");
        Log.d("Toast Plugin", message);

        if (action.equals("shortToast")) {          
            this.shortToast(message, callbackContext);
            return true;
        } else if (action.equals("longToast")) {
            this.longToast(message, callbackContext);
            return true;
        }
        return false;
    }

    private void shortToast(String message, CallbackContext callbackContext) {
        if (message != null && message.length() > 0) {
            Toast.makeText(cordova.getActivity().getApplicationContext(),
                    message, Toast.LENGTH_SHORT).show();
            callbackContext.success(message);
        } else {
            callbackContext.error("Expected one non-empty string argument.");
        }
    }

    private void longToast(String message, CallbackContext callbackContext) {
        if (message != null && message.length() > 0) {
            Toast.makeText(cordova.getActivity().getApplicationContext(),
                    message, Toast.LENGTH_LONG).show();
            callbackContext.success(message);
        } else {
            callbackContext.error("Expected one non-empty string argument.");
        }
    }
}


然后创建一个名为toastPlugin.js的文件。

//Plugin file should be always after cordova.js
//There is always better way to create, but this also works

window.shortToast = function(str, callback) {   
    cordova.exec(callback, function(err) {
        callback('Nothing to echo.');
    }, "ToastPlugin", "shortToast", [ str ]);
};

window.longToast = function(str, callback) {
    cordova.exec(callback, function(err) {
        callback('Nothing to echo.');
    }, "ToastPlugin", "longToast", [ str ]);
};


将这些文件链接到你的项目中,现在你可以在JavaScript中调用以下函数:

  • shortToast("短提示消息在此...");
  • longToast("长提示消息在此...");

4
<feature name="ToastPlugin"> <param name="android-package" value="com.company.plugins.ToastPlugin" /> </feature> - Anas Azeem
2
此外,对于新的PhoneGap版本(我认为从3.0开始),应该将import org.apache.cordova.api.CallbackContext; import org.apache.cordova.api.CordovaPlugin;替换为import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaPlugin; - Anas Azeem
嗨,我已经使用了上述代码。但是我得到了错误 10-01 01:51:44.653: W/System.err(1312): java.lang.ClassNotFoundException: com.company.plugins.ToastPlugin - Chinmay235
错误提示表明您没有放置类或未编译。 - Pradip Kharbuja
...然后,发布它 :) - Eliran Malka

7

PhoneGap-Toast 是一个开源(MIT 许可证)的 PhoneGap 桥接,允许您做到这一点。


3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接