2

我正在尝试在我的应用程序中使用这个插件。我从来没有写过插件,这是我第一次尝试在我的 Phonegap 程序中使用一个插件。我不得不尝试更改 java 文件中的一大堆东西以消除错误。当我单击屏幕上的按钮时,出现错误“未捕获的 ReferenceError:cordova 未在 file:///android_asset/www/js/clipboardmanager.js:2 中定义”。不知道这意味着什么或如何改变它。我会尝试粘贴所有内容,希望更容易找到我的错误。

结构体:

src
-->com.example.basket
  -->MainActivity.java
-->com.saaticiouglu.phonegap.ClipboardManagerPlugin
  -->ClipboardManagerPlugin.java

ClipboardManagerPlugin.java:

package com.saatcioglu.phonegap.ClipboardManagerPlugin;

import org.json.JSONArray;
import org.json.JSONException;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.ClipboardManager;


import org.apache.cordova.api.CordovaPlugin;
import org.apache.cordova.api.CallbackContext;
import org.apache.cordova.api.PluginResult;


@SuppressWarnings("deprecation")
public class ClipboardManagerPlugin extends CordovaPlugin {
private static final String actionCopy = "copy";
private static final String actionPaste = "paste";
private static final String errorParse = "Couldn't get the text to copy";
private static final String errorUnknown = "Unknown Error";

private ClipboardManager mClipboardManager;


@SuppressLint("NewApi") @Override
  public boolean execute(String action, JSONArray args, CallbackContext callbackContext)
  {

    // If we do not have the clipboard
    if(mClipboardManager == null) {
        mClipboardManager = (ClipboardManager) cordova.getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
    }


    // Copy
    if (action.equals(actionCopy)) {
        String arg = "";
        try {
            arg = (String) args.get(0);
            mClipboardManager.setText(arg);
        } catch (JSONException e) {
              callbackContext.error( errorParse);
        } catch (Exception e) {
              callbackContext.error( errorUnknown);
        }
        callbackContext.success();
    // Paste
    } else if (action.equals(actionPaste)) {
        String arg = (String) mClipboardManager.getText();
        if (arg == null) {
            arg = "";
        }
        PluginResult copy_ret = new PluginResult(PluginResult.Status.OK, arg);
        callbackContext.sendPluginResult(copy_ret);
        callbackContext.success();

    } else {
          callbackContext.error("invalid action");
          return false;
    }

    return true;
 }
}

我不得不使用 Surpress 警告,因为 setText 和 getText 给了我错误……而且它们仍然在我的文件中被划掉。但是现在没有错误...

剪贴板管理器.js:

window.clipboardManagerCopy = function(str, success, fail) {
cordova.exec(success, fail, "ClipboardManagerPlugin", "copy", [str]);
};

window.clipboardManagerPaste = function(success, fail) {
cordova.exec(success, fail, "ClipboardManagerPlugin", "copy", []);
};

我在 index.html 中引用了 JS 文件:

$('button').on('click', function(){
            window.clipboardManagerCopy(
                "the text to copy",
                function(r){alert("copy is successful")},
                function(e){alert(e)}
            );
        });

我只想得到一个简单的警报,看看它是否有效。感谢您抽出宝贵时间提供帮助。请帮我解决这个问题!!!

4

0 回答 0