Программно получить список установленных приложений, которые поддерживают данный тип файла

Хотя ясно, что мы не можем получить список установленных приложений на iOS, есть ли какие-нибудь хитрости, позволяющие нам определить список приложений, зарегистрированных для данного типа файлов? То есть список, который пользователь увидит в меню «Открыть в...» для этого конкретного типа файла. canOpenURL возвращает только логическое значение, но в идеале он вернул бы нам список поддерживаемых установленных приложений.


person RealCasually    schedule 03.04.2012    source источник


Ответы (3)


Я сомневаюсь, что любой из ваших двух вопросов («определить список приложений для данного типа файла» или «как реализовать «открыть в…»») возможен в текущих версиях iOS, поскольку пользователи не видят отдельные файлы на домашние экраны, на которых отображаются приложения. Также приложение не может выполнить событие «открыть отдельное приложение с этим конкретным файлом» (что легко выполнимо на Macintosh с Apple Events).

Но это звучит как отличные запросы функций, которые вы можете отправить в Apple по адресу http://bugreporter.apple.com (в который вы можете войти, если вы являетесь зарегистрированным разработчиком Apple). Если достаточное количество людей запросит эти функции (и потенциал "открыть в.. ." действительно является часто запрашиваемой функцией), Apple серьезно рассмотрит возможность включения их в будущие версии iOS.

person Michael Dautermann    schedule 03.04.2012
comment
Я думаю, что ваш ответ, вероятно, правильный, но я хочу убедиться, что я ясно выразился. Я не пытаюсь реализовать Open In... сам, я просто хотел бы выяснить, какие приложения будут отображаться там для данного типа. Это что-то меняет? - person RealCasually; 03.04.2012
comment
Также нет API для получения списка (или массива), какие приложения отвечают на какие файлы. Еще одна вещь для нашего списка пожеланий. - person Michael Dautermann; 03.04.2012

Открыть, безусловно, можно с помощью UIDocumentInteractionController. Вам просто нужно создать экземпляр экземпляра UIDocumentInteractionController:

//Following in header file:
UIDocumentInteractionController *docInteractionController;

Реализуйте делегат:

<UIDocumentInteractionControllerDelegate>

.m:

//Here the url is the document URL that you want to open (or you want to apply open in functionality)
self.docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:url];
self.docInteractionController.delegate = self;

Метод Open In будет выглядеть следующим образом:

- (void) openIn: (id) sender {
    [self.docInteractionController presentOptionsMenuFromBarButtonItem:sender animated:YES];
}

и как только вы закончите:

[self.docInteractionController dismissMenuAnimated:YES];

и это все. Это перечислит список приложений, поддерживаемых для документа, и при их выборе запустит соответствующее приложение с URL-адресом документа, с которым мы создали экземпляр.

person UPT    schedule 08.05.2012

Вы можете увидеть этот образец программы. Это может помочь вам. Он использовал экземпляр класса UIDocumentaInteractionController с его свойством UTI (уникальный идентификатор типа). Это помогает получить список установленных приложений на вашем телефоне, которые поддерживают тип файла, который вы открыли в своем приложении. Возможно, вам придется немного переписать свойство UTI, как вам удобно.

http://developer.apple.com/library/ios/#samplecode/DocInteraction/Introduction/Intro.html

person Samuel    schedule 08.05.2012