2017-02-08 3 views
0

Я не получаю доступ к данным, хранящимся в другом приложении UWP. Я видел, что вы можете сохранить данные в LocalState папке UWP приложения с помощью этого кода:Получить данные из другого приложения UWP

Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; 
Windows.Storage.StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder; 
Windows.Globalization.DateTimeFormatting.DateTimeFormatter formatter = 
      new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime"); 

StorageFile sampleFile = await localFolder.CreateFileAsync("example.txt", 
         CreationCollisionOption.ReplaceExisting); 
await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTime.Now)); 

Here is the official documentation.

Итак, с этим кодом я создаю файл example.txt в моем первом проекте UWP.

Возможно ли получить доступ к example.txt из второго проекта UWP? Если да, то как?

ответ

1

Да. Это возможно только в том случае, если оба приложения публикуются одним издателем.

Этот кэш папка называется PublisherCacheFolder

Вот Blog Post, который будет объяснить это в деталях.

Вам необходимо добавить расширение в свой appmanifest, прежде чем это можно будет сделать во всех приложениях, которые вы предпочитаете обмениваться данными.

<Extensions> 
    <Extension Category="windows.publisherCacheFolders"> 
    <PublisherCacheFolders> 
     <Folder Name="Downloads" /> 
    </PublisherCacheFolders> 
    </Extension> 
</Extensions> 

Существует хорошее видео объясняя об этом на Channel9. Перейти к 19-й минуте.

Ниже приведены простые способы записи и чтения от другого Blog.

async void WritetoPublisherFolder(string Text) 
{ 
    StorageFolder SharedFolder = Windows.Storage.ApplicationData.Current.GetPublisherCacheFolder("CommonFolder"); 
    StorageFile newFile = await SharedFolder.CreateFileAsync("SharedFile.txt", CreationCollisionOption.OpenIfExists); 
    await FileIO.WriteTextAsync(newFile, Text); 
} 

async Task<string> ReadFromSharedFolder() 
{ 
    StorageFolder SharedFolder = Windows.Storage.ApplicationData.Current.GetPublisherCacheFolder("CommonFolder"); 
    StorageFile newFile = await SharedFolder.GetFileAsync("SharedFile.txt"); 
    var text = await FileIO.ReadTextAsync(newFile); 
    return text; 
} 
+1

Спасибо большое, что это то, что я ищу! – fandro

2

Приложения в UWP изолированы песочницей, поэтому вы не можете так легко получить доступ к их хранилищу. Есть несколько вариантов для обмена данных:

  • вы можете использовать KnownFolders, которые могут быть доступны с помощью любого приложения с соответствующими возможностями,
  • вы можете use picker to save a file в выбранном пользователе места,
  • вы можете use picker to pick папки для которое ваше приложение получит,
  • или вы можете просто share data with other apps, которые зарегистрированы для получения определенного контента.
1

Вы также можете создать AppService, который может совместно использовать любые данные. В основном провайдер будет обслуживать эту услугу, и приложение, которому нужны данные, должно потреблять услугу.

Подробнее: https://docs.microsoft.com/en-us/windows/uwp/launch-resume/how-to-create-and-consume-an-app-service