gpt4 book ai didi

javascript - 如何在javascript中调用电话插件

转载 作者:行者123 更新时间:2023-12-02 19:21:53 25 4
gpt4 key购买 nike

好吧,我正在尝试实现一个电话间隙插件,它由两部分组成。我正在使用 cordova 2.0.0 和 eclipse。

这是java部分:

package org.apache.cordova;



import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.cordova.api.Plugin;
import org.apache.cordova.api.PluginResult;
import org.json.JSONArray;

import android.graphics.Bitmap;
import android.os.Environment;
import android.view.View;

public class Screenshot extends Plugin {

@Override
public PluginResult execute(String action, JSONArray args, String callbackId) {
// starting on ICS, some WebView methods
// can only be called on UI threads
final Plugin that = this;
final String id = callbackId;
super.cordova.getActivity().runOnUiThread(new Runnable() {
//@Override
public void run() {
View view = webView.getRootView();

view.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);

try {
File folder = new File(Environment.getExternalStorageDirectory(), "Pictures");
if (!folder.exists()) {
folder.mkdirs();
}

File f = new File(folder, "screenshot_" + System.currentTimeMillis() + ".png");

FileOutputStream fos = new FileOutputStream(f);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
that.success(new PluginResult(PluginResult.Status.OK), id);

} catch (IOException e) {
that.success(new PluginResult(PluginResult.Status.IO_EXCEPTION, e.getMessage()), id);
}
}
});

PluginResult result = new PluginResult(PluginResult.Status.NO_RESULT);
result.setKeepCallback(true);
return result;
}

}

这是 JavaScript 部分:

cordova.define("cordova/plugin/screenshot", function(require, exports, module) {
var exec = require('cordova/exec');

/**
* This class exposes the ability to take a Screenshot to JavaScript
*/
var Screenshot = function() {};

/**
* Save the screenshot to the user's Photo Library
*/
Screenshot.prototype.saveScreenshot = function() {
exec(null, null, "Screenshot", "saveScreenshot", []);
};

var screenshot = new Screenshot();
module.exports = screenshot;

});

if (!window.plugins) {
window.plugins = {};
}
if (!window.plugins.screenshot) {
window.plugins.screenshot = cordova.require("cordova/plugin/screenshot");
}

我试图用另一个页面上的另一个 javascript 函数调用它,但没有成功。我隐藏 Canvas 上图像的 anchor ,然后这一行:

setTimeout(takeScreenShot,500);

编辑——根据西蒙·麦克唐纳的回答进行这与 JavaScript 函数相关:

function takeScreenShot() {
window.plugins.screenshot.saveScreenshot();
}

以下 java 打印:

System.out.println(folder);
System.out.println("screenshot_" + System.currentTimeMillis() + ".png");

产生以下结果:

/mdt/sdcard/Pictures
screenshot_1347893081276.png

编辑 关闭设备并再次打开后,出现了我拍摄的屏幕截图,手机似乎缓存了它们,而不是实际将它们存储到所选文件夹中。

我已确保我的 config.xml 和 Android list 具有正确的权限和代码行。有人知道我哪里出错了吗?

最佳答案

您的代码中没有任何地方调用过 saveScreenshot 方法。您的 takeScreenShot 方法应如下所示:

function takeScreenShot() {
window.plugins.screenshot.saveScreenshot();
}

然后屏幕截图应保存在“/sdcard/Pictures”中。如果满足以下条件,这将起作用:

  1. 您记得将屏幕截图插件的插件行放入 config.xml 中
  2. 您提到这是在另一个页面上,因此请确保该页面具有截屏.js 的脚本标记。

关于javascript - 如何在javascript中调用电话插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12455774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com