iOS将文件在自己App中打开

1、首先在自己App的info.plist中注册可用类型

    <key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeName</key>
            <string>com.myapp.common-data</string>
            <key>LSItemContentTypes</key>
            <array>
                <string>com.microsoft.powerpoint.ppt</string>
                <string>public.item</string>
                <string>com.microsoft.word.doc</string>
                <string>com.adobe.pdf</string>
                <string>com.microsoft.excel.xls</string>
                <string>public.image</string>
                <string>public.content</string>
                <string>public.composite-content</string>
                <string>public.archive</string>
                <string>public.audio</string>
                <string>public.movie</string>
                <string>public.text</string>
                <string>public.data</string>
            </array>
        </dict>
    </array>
.pptx:          org.openxmlformats.presentationml.presentation
.docx:          org.openxmlformats.wordprocessingml.document
.xlsx:          org.openxmlformats.spreadsheetml.sheet

添加完后,保存,运行程序,在QQ中选择一个文件,选择用其他应用打开,就会发现我们的app这里写图片描述

点击之后,会调转到自己的应用,并调用以下方法

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation;

通过返回的URL可知,分享过来的文件保存在了Document/Inbox文件夹下

之后就可以预览我们分享过来的文件了。

获取所有文件

    NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Inbox"];

    NSFileManager *fileManager=[NSFileManager defaultManager];

    self.sourceArr = [fileManager subpathsAtPath:path];

点击进行预览

    NSString *path = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Inbox"] stringByAppendingPathComponent:self.sourceArr[indexPath.row]];

    NSURL *url = [NSURL fileURLWithPath:path];

    QLPreviewController *vc = [QLPreviewController new];
    self.filePath = url;
    vc.delegate = self;
    vc.dataSource = self;
    [self presentViewController:vc animated:YES completion:nil];
-(NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller{

    return 1;

}

-(id<QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index{

    return self.filePath;

}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值