私のアプリでは、[開く] というタイトルの共有シートにカスタム アクティビティを実装しました。このアイコンをタップすると、.txt ファイルが生成され、この生成された .txt ファイルを開いて操作できるアプリケーションのリストが表示されます。iOS は、共有シート内の各アプリの名前の前に自動的に "Open in" を付加します。
しかし、サードパーティの開発者が共有拡張機能を実装したため、何らかの理由で、この Open In インターフェイスにもそれらが表示されています。たとえば、Twitter が表示されますが、それをタップすると、.txt ファイル内のテキストが作成ウィンドウに表示されません。したがって、これらのサードパーティの共有拡張機能は、このインターフェイスではまったく役に立ちません。さらに、それらは元の共有シートに既に表示されていました (そしてそこで動作します)。ユーザーは [開く] をタップしたため、.txt ファイルを開くことができるアプリのみが表示されます。
このカスタム アクティビティで Open In アプリのみが提供されるようにするにはどうすればよいですか?
//make a txt file to write the data
NSString *fileName = [NSString stringWithFormat:@"%@Text.txt", NSTemporaryDirectory()];
[self.textToShare writeToFile:fileName
atomically:NO
encoding:NSUTF8StringEncoding
error:nil];
NSURL *textFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"Text.txt"]];
self.openInController = [UIDocumentInteractionController interactionControllerWithURL:textFileURL];
self.openInController.delegate = self;
BOOL didPresentOpenIn = [self.openInController presentOpenInMenuFromBarButtonItem:self.buttonToPresentFrom animated:YES];
if (!didPresentOpenIn) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No Apps Available"
message:@"You do not have any apps installed that can open text files."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}