防止第三方扩展程序出现在“打开”应用程序列表中

时间:2014-12-24 19:52:34

标签: ios objective-c uiactivityviewcontroller uidocumentinteraction uiactivity

在我的应用程序中,我在共享表中实现了一个名为Open In的自定义活动,点击此图标将生成.txt文件,并显示能够打开和使用此生成的.txt文件的应用程序列表。 iOS会在共享表中的每个应用程序名称前自动添加“打开方式”。

但是现在第三方开发人员已经实现了共享扩展,出于某种原因,这些也出现在这个Open In界面中。例如,Twitter显示,但当我点击它时,.txt文件中的文本不会出现在撰写窗口中。因此,这些第三方共享扩展在此界面中完全无用。此外,它们已经在原始共享表中显示(并且它们在那里工作) - 用户点击了Open In,因此他们只关心查看可以打开.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];
    }

screenshot

0 个答案:

没有答案