Я новичок в разработке Windows-телефонов, и мне нужно подключить к нему приложение, используя phonegap/cordova. Большая часть моего кода работает для Android/iOS, а также для winphone, но на этом FileOpenPicker я заблокирован. Я использую winjs 2.1, и я хотел бы подготовить сценарий, который будет вызываться, когда я нахожусь на странице, нуждающейся в этой функции.FileOpenPicker WP8.1 - Как сделать
Я прочитал массу примеров, и я думаю, что я довольно близко к решению.
В моем HTML файл я объявляю:
<script src="//Microsoft.Phone.WinJS.2.1/js/base.js"></script>
<script src="//Microsoft.Phone.WinJS.2.1/js/ui.js"></script>
<script type="text/javascript" src="js/default.js"></script>
И Это мой default.js, файл я использую на странице, где FileOpenPicker должны называться.
(function() {
"use strict";
var app = WinJS.Application;
var activation = Windows.ApplicationModel.Activation;
app.onloaded = function (args) {
var activationKind = args.detail.kind;
document.getElementById("btnSnap").addEventListener("click", pickSinglePhoto);
if (activationKind === Windows.ApplicationModel.Activation.ActivationKind.pickFileContinuation) {
continueFileOpenPicker(options.activatedEventArgs);
}
};
function pickSinglePhoto() {
// Clean scenario output
WinJS.log && WinJS.log("", "sample", "status");
console.log("in pickSinglePhoto");
// Create the picker object and set options
var openPicker = new Windows.Storage.Pickers.FileOpenPicker();
openPicker.viewMode = Windows.Storage.Pickers.PickerViewMode.thumbnail;
openPicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.picturesLibrary;
// Users expect to have a filtered view of their folders depending on the scenario.
// For example, when choosing a documents folder, restrict the filetypes to documents for your application.
openPicker.fileTypeFilter.replaceAll([".png", ".jpg", ".jpeg"]);
// Open the picker for the user to pick a file
openPicker.pickSingleFileAndContinue();
}
// Called when app is activated from file open picker
// eventObject contains the returned files picked by user
function continueFileOpenPicker(eventObject) {
console.log("in continueFileOpenPicker");
var files = eventObject[0].files;
var filePicked = files.size > 0 ? files[0] : null;
if (filePicked !== null) {
// Application now has read/write access to the picked file
WinJS.log && WinJS.log("Picked photo: " + filePicked.name, "sample", "status");
} else {
// The picker was dismissed with no selected file
WinJS.log && WinJS.log("Operation cancelled.", "sample", "status");
}
}
app.start();
})();
К сожалению, это не работает. Я не могу войти в continueFileOpenPicker, потому что флаг activationKind всегда не определен. Я уверен, что я должен использовать app.onactivated вместо app.onloaded, но в первом случае я не могу войти в функцию.
Я уже пробовал функцию pickSinglePhoto и, похоже, работает, но после выбора не могу вернуться на страницу после сбоя приложения, потому что я не могу выбрать и использовать функцию в других файлах javascript как грубый.
Любой ключ?