3

私のアプリでは、[開く] というタイトルの共有シートにカスタム アクティビティを実装しました。このアイコンをタップすると、.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];
    }

スクリーンショット

4

0 に答える 0