В доступе отказано. Исключение из HRESULT: 0x80070005 в Windows Phone 8.1

Я разрабатываю приложение Windows Phone 8.1 Silverlight,

Я пытаюсь загрузить документ с SD-карты, но получаю эту ошибку.

Access is denied. Exception from HRESULT: 0x80070005
System.UnauthorizedAccessException

Я также добавил возможность «ID_CAP_REMOVABLE_STORAGE» в файле WMAppManifest. Но не сработало.

Смотрите мой код ниже:

private async void UploadDocument()
{
  StorageFolder externalDevices = KnownFolders.RemovableDevices;

  StorageFolder sdCard = (await externalDevices.GetFoldersAsync()).FirstOrDefault();

  if (sdCard != null)
  {
      //An SD card is present and the sdCard variable now contains a reference to it
  }

  else
  {
      // No SD card is present.
  }
}

person Nitesh Kothari    schedule 02.01.2015    source источник
comment
если вы используете статический метод для доступа к SD-карте, избегайте его.   -  person Gk_999    schedule 02.01.2015
comment
@Gk_999 Gk_999 что делать и что такое статический метод? Мне очень жаль, я понятия не имею об этой проблеме. Спасибо, чувак, и, пожалуйста, направь меня.   -  person Nitesh Kothari    schedule 02.01.2015
comment
Я имею в виду, что если ваш приведенный выше код находится в статическом методе, то избегайте его, т.е. создайте нестатический класс, создайте объект и затем используйте этот метод. Это «МОЖЕТ БЫТЬ» возможной причиной этой ошибки, а не обязательно.   -  person Gk_999    schedule 02.01.2015
comment
@Gk_999 Gk_999 хорошо, посмотри мое редактирование, я все еще получаю ту же ошибку. Спасибо   -  person Nitesh Kothari    schedule 02.01.2015
comment
@Romasz Я добавил возможности в оба файла манифеста: WMAppmanifest и package.appxmanifest, но не понимаю, что происходит не так. Спасибо   -  person Nitesh Kothari    schedule 02.01.2015
comment
@Romasz Я думаю, проблема может быть в ассоциации типов файлов.   -  person Nitesh Kothari    schedule 02.01.2015
comment
@Romasz Должен ли я удалить FileTypeAssociation из WMAppmanifest? Спасибо   -  person Nitesh Kothari    schedule 02.01.2015
comment
@NiteshKothari Я устал без него, поэтому думаю, что он там не нужен.   -  person Romasz    schedule 02.01.2015
comment
@Romasz, хорошо, большое спасибо, а как насчет ID_CAP_REMOVABLE_STORAGE в WMAppmanifest? я должен отключить его?   -  person Nitesh Kothari    schedule 02.01.2015
comment
Как я пробовал - он там нужен, так что оставь. Просто попробуйте и посмотрите, как это работает.   -  person Romasz    schedule 02.01.2015


Ответы (1)


В WP8.1 также есть новый файл манифеста — Package.appxmanifest — убедитесь, что вы также добавили туда возможность — Местоположение. Также вам нужно будет добавить сопоставление типов файлов, так как это Silverlight.

Хотя (я не знаю почему) вам придется добавить это в первый раз из кода - щелкните правой кнопкой мыши файл Package.appxmanifest -> Просмотр кода и добавьте, например вот так в разделе application/Extensions:

<Extension Category="windows.fileTypeAssociation">
  <FileTypeAssociation Name="text">
    <DisplayName>Text file</DisplayName>
    <SupportedFileTypes>
      <FileType ContentType="text/file">.txt</FileType>
    </SupportedFileTypes>
  </FileTypeAssociation>
</Extension>

После добавления и сохранения вы сможете добавлять/редактировать ассоциации типов файлов с помощью графического интерфейса.

person Romasz    schedule 02.01.2015
comment
хорошо, но есть ли способ разрешить любой вид документа и какой тип содержимого для файлов pdf и excel. Большое спасибо. @Romasz - person Nitesh Kothari; 02.01.2015
comment
@NiteshKothari WP8.0 и WP8.1 Silverlight имеют Типы файлов с ограничениями — вы не сможете с ними ассоциироваться. - person Romasz; 02.01.2015
comment
Хорошо, брат, наконец-то заработало. Спасибо большое!! @Romasz - person Nitesh Kothari; 02.01.2015