Как я могу получить доступ к изображению, опубликованному из файлов или фотографий в приложении .NET iOS (ранее Xamarin.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу получить доступ к изображению, опубликованному из файлов или фотографий в приложении .NET iOS (ранее Xamarin.

Сообщение Anonymous »

Я работаю с приложением .NET iOS (ранее Xamarin.iOS) и хочу получить доступ к изображению, опубликованному из приложения «Файлы» или «Фотографии». Я пробовал реализовать расширение Share Extension без пользовательского интерфейса, но оно работает не так, как ожидалось. Кроме того, отладчик не работает должным образом в проекте расширения .NET iOS.
Есть ли правильный способ добиться этого в .NET iOS с расширением общего доступа или без него?
Что я уже пробовал:
  • Создал проект расширения общего доступа через XCode.
    Он создает все необходимые папки/файлы в нашем проекте.
  • Класс Принцип преобразован в UIViewcontroller вместо SLCompose.
  • Переопределен требуемый метод для загрузки изображения с помощью NSContext.
  • Создайте новые профили и группа приложений.
Изображение
< /p>

Код: Выделить всё

void LoadImage (NSExtensionContext extensionContext = null) {

var image = new NSExtensionItem [0];

NSExtensionItem inputItem;

if (extensionContext == null) {

inputItem = ExtensionContext.InputItems [0];

}

else {

inputItem = extensionContext.InputItems [0];

}

var outputItem = inputItem.Copy () as NSExtensionItem;

var itemProvider = outputItem.Attachments [0];

string imageTypeIdentifier = "public.image";

string pdfTypeIdentifier = "com.adobe.pdf";

var test = itemProvider.GetRegisteredTypeIdentifiers (NSItemProviderFileOptions.OpenInPlace);

if (!(itemProvider.HasItemConformingTo (imageTypeIdentifier)) || itemProvider.HasItemConformingTo (pdfTypeIdentifier)) {

OpenUrl (NSUrl.FromString ($"myapp://itemtypeimagedoesnotexists)"));

return;

}

itemProvider.LoadItem (imageTypeIdentifier, null, (item, loadError) => {

if (item != null && loadError == null) {

InvokeOnMainThread (() => {

OpenUrl (NSUrl.FromString ($"myapp://{item.ToString ()}"));

if (item is UIImage) {

SaveImageToAppGroup (item as UIImage, "shared_image_url.txt");

}

});

}

else {

InvokeOnMainThread (() => {

OpenUrl (NSUrl.FromString ($"myapp://itemisnullorhasloaderror"));

});

}

});

itemProvider.LoadItem (pdfTypeIdentifier, null, (item, loadError) => {

if (item != null && loadError == null) {

InvokeOnMainThread (() => {

OpenUrl (NSUrl.FromString ($"myapp://{item.ToString ()}"));

if (item is NSData) {

SavePdfToAppGroup (item as NSData, "shared_image_pdf.txt");

}

});

}

else {

InvokeOnMainThread (() => {

OpenUrl (NSUrl.FromString ($"myapp://itemisnullorhasloaderror"));

});

}

});

}

public void SaveImageToAppGroup (UIImage image, string fileName) {

var appGroupPath = NSFileManager.DefaultManager.GetContainerUrl (APP_GROUP_IDENTIFIER);

var directoryPath = appGroupPath.Path;

if (!NSFileManager.DefaultManager.FileExists (directoryPath)) {

NSError createDirError = null;

NSFileManager.DefaultManager.CreateDirectory (appGroupPath, true, null, out createDirError);

}

NSData imgData = image.AsJPEG ();

var filePath = Path.Combine (directoryPath, fileName);

NSError saveError = null;

imgData.Save (filePath, NSDataWritingOptions.Atomic, out saveError);

}
Здесь файл не сохраняется в группе приложений с использованием расширения. Поэтому я не могу прочитать это и в приложении.
Есть какие-нибудь сведения?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ormerly-xa
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»