Windows 10 UWP HTML/Winjs 应用程序在从共享超级按钮启动时未收到 onactivated 事件
Windows 10 UWP HTML/Winjs application not receiving onactivated event when started from the Sharing charm
我目前正在使用 HTML5/WinJS 技术开发 Windows 10 UWP。我希望该应用程序成为 PDF 的共享目标。我已将此包含在清单中,
<Extensions>
<uap:Extension Category="windows.shareTarget">
<uap:ShareTarget Description="Test Share Target">
<uap:SupportedFileTypes>
<uap:FileType>.pdf</uap:FileType>
</uap:SupportedFileTypes>
</uap:ShareTarget>
</uap:Extension>
</Extensions>
我在 index.js
中有这个
var app = WinJS.Application;
var activation = Windows.ApplicationModel.Activation;
app.onactivated = function (args) {
console.log("app.onactivated");
if (args.detail.kind === activation.ActivationKind.launch) {
console.log("launch");
if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {
// TODO: This application has been newly launched. Initialize your application here.
console.log("newly launched");
} else if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.shareTarget) {
var shareOperation = args.detail.shareOperation;
console.log(JSON.stringify(shareOperation, null, 4));
} else
{
// TODO: This application has been reactivated from suspension.
// Restore application state here.
}
args.setPromise(WinJS.UI.processAll().then(function() {
// TODO: Your code here.
}));
当我从 Visual Studio 2015/debugging 内部直接在 windows phone 上启动应用程序时,我看到了带有控制台日志记录的预期输出。我还可以 select 一个 PDF 文件,并将其共享到我的应用程序,然后它就会启动——但我在 VS2015 中根本看不到任何控制台输出。我正在寻找 console.log(JSON.stringify(shareOperation, null, 4)); 的输出
如果在 Google 和 Microsoft 网站上查看特定的 Windows 10 个 UWP 示例,但找不到任何东西,我只找到了一些信息片段。
我的应用程序似乎在从共享超级按钮启动时没有收到 onactivated 事件。
我做错了什么?
我注意到,你的 if 语句
(args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.shareTarget)
目前包含在
的if语句中
(args.detail.kind === activation.ActivationKind.launch)
因此,除非您的应用程序执行 'Launch' 操作,否则您 'shareTarget' 的 if 语句将不会执行。
你应该像这样提取它:
if (args.detail.kind === activation.ActivationKind.launch) {
console.log("launch");
if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {
// TODO: This application has been newly launched. Initialize your application here.
console.log("newly launched");
}
} else if(args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.shareTarget) {
var shareOperation = args.detail.shareOperation;
console.log(JSON.stringify(shareOperation, null, 4));
}
这是我做的一个Demo,大家可以参考:Share Target Sample
我目前正在使用 HTML5/WinJS 技术开发 Windows 10 UWP。我希望该应用程序成为 PDF 的共享目标。我已将此包含在清单中,
<Extensions>
<uap:Extension Category="windows.shareTarget">
<uap:ShareTarget Description="Test Share Target">
<uap:SupportedFileTypes>
<uap:FileType>.pdf</uap:FileType>
</uap:SupportedFileTypes>
</uap:ShareTarget>
</uap:Extension>
</Extensions>
我在 index.js
中有这个 var app = WinJS.Application;
var activation = Windows.ApplicationModel.Activation;
app.onactivated = function (args) {
console.log("app.onactivated");
if (args.detail.kind === activation.ActivationKind.launch) {
console.log("launch");
if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {
// TODO: This application has been newly launched. Initialize your application here.
console.log("newly launched");
} else if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.shareTarget) {
var shareOperation = args.detail.shareOperation;
console.log(JSON.stringify(shareOperation, null, 4));
} else
{
// TODO: This application has been reactivated from suspension.
// Restore application state here.
}
args.setPromise(WinJS.UI.processAll().then(function() {
// TODO: Your code here.
}));
当我从 Visual Studio 2015/debugging 内部直接在 windows phone 上启动应用程序时,我看到了带有控制台日志记录的预期输出。我还可以 select 一个 PDF 文件,并将其共享到我的应用程序,然后它就会启动——但我在 VS2015 中根本看不到任何控制台输出。我正在寻找 console.log(JSON.stringify(shareOperation, null, 4)); 的输出
如果在 Google 和 Microsoft 网站上查看特定的 Windows 10 个 UWP 示例,但找不到任何东西,我只找到了一些信息片段。
我的应用程序似乎在从共享超级按钮启动时没有收到 onactivated 事件。
我做错了什么?
我注意到,你的 if 语句
(args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.shareTarget)
目前包含在
的if语句中(args.detail.kind === activation.ActivationKind.launch)
因此,除非您的应用程序执行 'Launch' 操作,否则您 'shareTarget' 的 if 语句将不会执行。
你应该像这样提取它:
if (args.detail.kind === activation.ActivationKind.launch) {
console.log("launch");
if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {
// TODO: This application has been newly launched. Initialize your application here.
console.log("newly launched");
}
} else if(args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.shareTarget) {
var shareOperation = args.detail.shareOperation;
console.log(JSON.stringify(shareOperation, null, 4));
}
这是我做的一个Demo,大家可以参考:Share Target Sample