2015-05-05 12 views
4

Требование: Доля текст и изображения с помощью DataTransferManager в Facebook в ОС Windows 10.Невозможно разделить изображение с помощью DataTransferManager в Windows 10

Проблема: Невозможно разделить изображение.

Ниже показан код, я использовал,

private async void DataTransferManager_DataRequested(DataTransferManager sender, DataRequestedEventArgs args) 
     { 
      DataRequestDeferral deferral = args.Request.GetDeferral(); 
      args.Request.Data.Properties.Title = "Sharing sample"; 
      args.Request.Data.SetText("Testing share in universal app"); 
      var imageUri = "http://cdn.vrworld.com/wp-content/uploads/2015/01/microsoft-announces-windows-10_ahab.1920.jpg"; 

      //var storageFile = await StorageFile.CreateStreamedFileFromUriAsync("ShareFile", new Uri(imageUri), null); 
      //List<IStorageItem> storageItems = new List<IStorageItem>(); 
      //storageItems.Add(storageFile); 
      //args.Request.Data.SetStorageItems(storageItems); 

      args.Request.Data.SetBitmap(Windows.Storage.Streams.RandomAccessStreamReference.CreateFromUri(new Uri(imageUri))); 
      deferral.Complete(); 
     } 

При использовании метода SetBitmap, только заголовок и текст используются совместно. Изображение не отображается на панели общего доступа и не делится целевым приложением.

Когда я использую SetStorageItems (см. Комментарий), ни один из пунктов не является общим. На панели общего доступа отображается текст «Что у вас на уме».

Любая обратная связь приветствуется, спасибо!

+0

вы пробовали делиться с другими приложениями? Facebook может не поддерживать эти типы данных. –

+0

@Peter Torr MSFT - я пробовал делиться щебетать, но там тоже изображение не появляется. Еще одна проблема, с которой я столкнулся, заключается в том, что почтовое приложение по умолчанию и Google + не отображаются в списке приложений в области общего доступа. – Bells

ответ

3

Общий доступ к URI потоковым файлам, к сожалению, не поддерживается. Вот как бы я идти об этом:

  1. Когда пользователь нажимает кнопку Отправить, начать загрузку файла и показать какой-то прогресс, если это большой файл. Вы могли бы также предварительно загрузить файл, конечно. Настройте экземпляр StorageFile , содержащий файл.
  2. Вызов DataTransferManager.ShowShareUI
  3. В вашем DataRequested обработчика, используйте SetStorageItems разделить экземпляр StorageFile.
+0

Спасибо, проверим этот способ и обновим результат. – Bells

+0

Пожалуйста, проверьте это: http://stackoverflow.com/questions/42856996/uwp-share-feature-not-working-in-windows-10-mobile?noredirect1_comment72822335_42856996 похоже, что это не так. – SuperJMN

-3

Я думаю, что вы имеете в виду Share Target в UWP Вы можете сослаться на этот URL https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/ShareSource

Этот пример демонстрирует, как содержание приложения акций с другим приложением. В этом примере используются классы из пространства имен Windows.ApplicationModel.DataTransfer. Некоторые из классов, которые вы, возможно, захотите просмотреть более подробно, - это класс DataTransferManager, который используется для инициирования операции общего доступа, и класс DataPackage, который вы используете для упаковки содержимого. Поскольку каждый сценарий совместного использования обычно включает в себя два приложения - исходное приложение и целевое приложение, которое получает контент, мы рекомендуем вам установить и развернуть образец целевого приложения для контента общего доступа при его установке и запуске. Таким образом, вы можете видеть, как совместное использование работает от конца до конца.

В этом примере описано, как обмениваться контентом в различных форматах, в том числе:

1.Text 2.Web ссылка 3.Application ссылка 4.Images 5.Files 6.Delay рендеренной файлы 7.HTML содержание 8.Custom данные

protected override bool GetShareContent(DataRequest request) 
    { 
     bool succeeded = false; 

     if (this.imageFile != null) 
     { 
      DataPackage requestData = request.Data; 
      requestData.Properties.Title = TitleInputBox.Text; 
      requestData.Properties.Description = DescriptionInputBox.Text; // The description is optional. 
      requestData.Properties.ContentSourceApplicationLink = ApplicationLink; 

      // It's recommended to use both SetBitmap and SetStorageItems for sharing a single image 
      // since the target app may only support one or the other. 

      List<IStorageItem> imageItems = new List<IStorageItem>(); 
      imageItems.Add(this.imageFile); 
      requestData.SetStorageItems(imageItems); 

      RandomAccessStreamReference imageStreamRef = RandomAccessStreamReference.CreateFromFile(this.imageFile); 
      requestData.Properties.Thumbnail = imageStreamRef; 
      requestData.SetBitmap(imageStreamRef); 
      succeeded = true; 
     } 
     else 
     { 
      request.FailWithDisplayText("Select an image you would like to share and try again."); 
     } 
     return succeeded; 
    } 
+1

Другой ответ с копией в ответ. Это может быть 10-й, который я нашел в ваших ответах. Пожалуйста, подумайте, как лучше ответить на ваши вопросы, а точнее - более лично я бы сказал. Скопированный ответ можно использовать только для комментариев. – Ian

+0

Обновление с помощью исходного кода –

+1

Если вы копируете/вставляете код из другого места, вы должны ** уточнить, что оно не написано вами. Просто добавить ссылку недостаточно. Используйте [форматирование цитаты] (http://stackoverflow.com/help/formatting) (запустите строку с помощью '>'), чтобы отличить ваши слова от слов, которые вы копируете. –