首先,我正在将我的Windows 8 metro应用程序中的内容分享到另一个应用程序(例如Mailto应用程序),所以:
现在,我正在使用共享合同和我的应用程序共享文件将文件共享到mailto应用程序,
我想知道是否: -
我可以将主题设置为我正在共享文件的mailto应用程序作为该mailto应用程序的附件,如果是,请告诉我该怎么做?
如果没有,请让我知道这是什么工作?
答案 0 :(得分:3)
截至目前,这是不可能的。
Windows 8最近推出了一种名为协议激活的新API。通过协议激活,您可以从应用程序启动其他Windows 8应用程序并传入数据。 Microsoft在Maps应用程序上工作,您现在可以将信息传递到Map应用程序,如下所示(地图应用程序的URI方案)http://msdn.microsoft.com/en-us/library/windows/apps/jj635237.aspx
请参阅http://blog.jerrynixon.com/2012/10/walkthrough-using-windows-8-custom.html
上的代码演练现在,我很快就会确定,您会看到一些邮件应用程序的自定义参数,您可以使用协议激活从您的应用程序传递这些参数。
只需2美分
答案 1 :(得分:1)
不,目前无法做到这一点。
答案 2 :(得分:1)
我可能无法正确理解这个问题,但如果你想做的就是能够点击"分享"按钮栏上的按钮,然后选择" Mail"应用程序,并能够填充"邮件"显示应用程序的分享飞出,然后您可以按照以下方法:
private DataTransferManager dataTransferManager; //class member
// put the following code block wherever you need it:
// Register as a share source
if (this.dataTransferManager == null)
{
this.dataTransferManager = DataTransferManager.GetForCurrentView();
this.dataTransferManager.DataRequested -= this.OnDataRequested;
try
{
this.dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager, DataRequestedEventArgs>(this.OnDataRequested);
}
catch
{
};
}
private void OnDataRequested(DataTransferManager sender, DataRequestedEventArgs e)
{
DataRequest request = e.Request;
DataRequestDeferral deferal = request.GetDeferral();
try
{
// this property will set your subject line
// it will also be shown on the Share fly-out (right below the main
// heading that says 'Share'
request.Data.Properties.Title = GetCustomMailSubjectLine();
if (string.IsNullOrEmpty(request.Data.Properties.Title))
{
request.FailWithDisplayText("An operation failed. Please try again.");
}
else
{
// this will also be shown on the Share fly-out, right below the 'Title'
// property set above
request.Data.Properties.Description = GetMyAppsSharingDesciption();
// use request.Data.SetDataProvider() if your data needs to be asynchronously retrieved
// otherwise directly use request.Data.SetData() (or one of the other
//methods depending on what you need)
request.Data.SetDataProvider(StandardDataFormats.Html, RetrieveSharedData);
}
}
finally
{
deferal.Complete();
}
}
private async void RetrieveSharedData(DataProviderRequest request)
{
DataProviderDeferral deferal = request.GetDeferral();
try
{
// this will set your email's body
request.SetData(await GetCustomMailBodyAsync());
}
finally
{
deferal.Complete();
}
}