アプリケーションでこのプラグインを使用しようとしています。プラグインを作成したことがなく、Phonegap プログラムでプラグインを使用するのはこれが初めてです。エラーを取り除くために、Javaファイル内のすべてのものを変更しようとしなければなりませんでした。画面上のボタンをクリックすると、「Uncaught ReferenceError: cordova is not defined at 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;
}
}
setText と getText でエラーが発生していたため、Surpress の警告を使用する必要がありましたが、ファイル内でまだ取り消し線が引かれています。しかし、今のところエラーはありません...
クリップボードマネージャー.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)}
);
});
それが機能することを確認するための簡単なアラートを取得したいだけです。お時間を割いていただきありがとうございます。これを修正するのを手伝ってください!!!