为什么我的Windows Store(Metro)应用程序不会出现在共享窗格中?

时间:2013-08-02 11:41:02

标签: c# .net xaml microsoft-metro windows-store-apps

我已将我的应用设为共享目标(和源),我可以成功与其他应用分享我的应用内容,但当我在其他应用中,例如Mail或IE时,我无法与我分享他们的内容应用程序,因为它不会作为可用的共享目标应用程序出现在共享窗格中。

我已阅读并遵循MSDN文档,检出了示例,并在Package.AppXManifest文件中设置了“共享目标声明”。

为什么,以及如何解决这个问题?


C#代码隐藏:

    ShareOperation shareOperation;
    private string sharedDataTitle;
    private string sharedDataDescription;
    private string shareQuickLinkId;
    private string sharedText;
    private Uri sharedUri;
    private IReadOnlyList<IStorageItem> sharedStorageItems;
    private string sharedCustomData;
    private string sharedHtmlFormat;
    private IReadOnlyDictionary<string, RandomAccessStreamReference> sharedResourceMap;
    private IRandomAccessStreamReference sharedBitmapStreamRef;
    private IRandomAccessStreamReference sharedThumbnailStreamRef;

    private void ReportStarted()
    {
        this.shareOperation.ReportStarted();
    }

    private void ReportCompleted()
    {
        this.shareOperation.ReportCompleted();
    }

    protected override async void OnNavigatedTo(NavigationEventArgs e)
    {
        RegisterForShare();

        try
        {
            this.shareOperation = (ShareOperation)e.Parameter;
            await Task.Factory.StartNew(async () =>
                {
                    ReportStarted();
                    // Retrieve data package properties.
                    this.sharedDataTitle = this.shareOperation.Data.Properties.Title;
                    this.sharedDataDescription = this.shareOperation.Data.Properties.Description;
                    this.shareQuickLinkId = this.shareOperation.QuickLinkId;

                    // Retrieve data package content.
                    if (this.shareOperation.Data.Contains(StandardDataFormats.Text))
                    {
                        try
                        {
                            this.sharedText = await this.shareOperation.Data.GetTextAsync();
                        }
                        catch (Exception exception)
                        {
                            // NotifyUser of error.
                        }
                    }
                    else if(this.shareOperation.Data.Contains(StandardDataFormats.Html))
                    {
                        try
                        {
                            this.sharedHtmlFormat = await this.shareOperation.Data.GetHtmlFormatAsync();
                        }
                        catch (Exception exception)
                        {

                        }
                    }
                    else if (this.shareOperation.Data.Contains(StandardDataFormats.Uri))
                    {
                        try
                        {
                            this.sharedUri = await this.shareOperation.Data.GetUriAsync();
                        }
                        catch (Exception exception)
                        {

                        }
                    }

                    // Get back to the UI thread.
                    await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () =>
                        {
                            if (this.sharedText != null)
                            {
                                // Create a Note out of shared data.
                                CreateNote(this.sharedDataTitle, this.sharedText, null);
                                this.shareOperation.ReportDataRetrieved();
                            }

                            if (this.sharedUri != null)
                            {
                                CreateNote(this.sharedDataTitle, this.sharedUri.OriginalString, null);
                                this.shareOperation.ReportDataRetrieved();
                            }

                            if (this.sharedHtmlFormat != null)
                            {
                                CreateNote(this.sharedDataTitle, this.sharedHtmlFormat.ToString(), null);
                                this.shareOperation.ReportDataRetrieved();
                            }
                        });
                });
        }
        catch (Exception exception)
        {
            Debug.WriteLine(exception.Message);

        }

        if (e.NavigationMode == NavigationMode.Back)
        {
            navigatedBack = true;


        }

        base.OnNavigatedTo(e);
    }

App.xaml.cs:

    protected override void OnShareTargetActivated(ShareTargetActivatedEventArgs args)
    {
        var rootFrame = new Frame();
        rootFrame.Navigate(typeof(MainPage), args.ShareOperation);
        Window.Current.Content = rootFrame;
        Window.Current.Activate();
    }

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

在您的包清单中,请确保添加“共享目标”

的声明