Как сделать снимок экрана в приложении cordova / phonegap

Я пытаюсь сделать снимок экрана в моем приложении cordova, используя этот плагин, но возникает ошибка. Я не знаю, что такое ошибка, поскольку я тестирую ее на своем Android-смартфоне, и приложение просто блокирует. В браузере то же самое происходит с этой ошибкой: TypeError: Cannot read property 'save' of undefined , где «save» исходит из этого кода:

 navigator.screenshot.save(function(error,res){ if(error){ console.error(error); }else{ console.log('ok',res.filePath); } }); 

PS: Также попробовал navigator.plugin.screenshot... , navigator.plugins.screenshot , window.screenshot , window.plugin.screenshot и window.plugins.screenshot

PS2: Я проверил, установлен ли плагин с cordova plugins cordova в CLI cordova, и все в порядке, плагин существует в папке плагинов и для версии cordova> = 3.0.0, а мой – новее

Но, конечно, браузер не загружает плагин, потому что эта ошибка также возникает там: Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:23273/www/cordova_plugins.json . Снимок экрана не сделан, он проверяется на моем смартфоне.

Я использую Worklight и сталкивался с той же проблемой. Мое решение состояло в том, чтобы изменить код файла Screenshot.js на:

 var formats = ['png','jpg']; function Screenshot() { } Screenshot.prototype.save = function (callback,format,quality, filename) { format = (format || 'png').toLowerCase(); filename = filename || 'screenshot_'+Math.round((+(new Date()) + Math.random())); if(formats.indexOf(format) === -1){ return callback && callback(new Error('invalid format '+format)); } quality = typeof(quality) !== 'number'?100:quality; cordova.exec(function(res){ callback && callback(null,res); }, function(error){ callback && callback(error); }, "Screenshot", "saveScreenshot", [format, quality, filename]); }; Screenshot.install = function () { if (!window.plugins) { window.plugins = {}; } window.plugins.screenshot = new Screenshot(); return window.plugins.screenshot; }; cordova.addConstructor(Screenshot.install); 

Таким образом, я могу сделать вызов с помощью следующего кода:

 window.plugins.screenshot.save(function(error,res){ if(error){ alert(error); }else{ alert('ok',res.filePath); //should be path/to/myScreenshot.jpg } },'jpg',50,'myScreenShot'); 

Это отлично работало на моем смартфоне Android.

Я также добавил файл res / xml / config.xml:

 <feature name="Screenshot"> <param name="android-package" value="org.apache.cordova.screenshot.Screenshot"/> </feature> 

В файле AndroidManifest.xml:

 <uses-permission android: name = "android.permission.WRITE_EXTERNAL_STORAGE" /> 

И добавил класс java в следующем пакете: org.apache.cordova.screenshot.Screenshot

Все эти конфигурации содержат информацию в файле plugin.xml плагина

Загружаете ли вы свой проект в localhost? Почему у вас есть такой файл:

http://localhost:23273/www/cordova_plugins.json. ?

Вы пытаетесь имитировать проект кордовы с «кордовой службой 23273»? Вы не можете использовать какой-либо плагин с «кордовой службой».

У вас должен быть файл: /// как протокол …

Спасибо всем, к сожалению, я не могу дать реальный ответ на этот вопрос, поскольку я многое сделал. Последнее заключалось в том, чтобы обновить файл cordova.js до последней версии, что фактически решило мою проблему, но каждый комментарий и ответ помогли многим.

Я хочу поблагодарить как @Talysson de Castro, так и @Darktalker за то, что помогли мне! 🙂

Intereting Posts