文档章节

如何使用UIActivityViewController

S
 SheamUs_lcc
发布于 2016/05/23 16:33
字数 534
阅读 10
收藏 0
点赞 2
评论 0

AirDrop是iOS7中新增的一个近距离分享功能,两个相邻的iOS设备可以通过AirDrop实现传递图片、文件等功能,有了AirDrop基本上可抛弃类似Dropbox的ShareLink和PublicFolder功能。

iOS7的SDK中已经在UIActivityViewController中内置了AirDrop功能,使用时与分享到twitter和facebook的方式基本一致,只需要将需要传递的文件URL设置给UIActivityViewController对象的ActivityItems对象即可,区别在于:如果传递文件,那么URL应该是“file://”开头,而不是常见的“http://”开头  

参考代码: 

1
2
3
4
5
6
NSString *filePath = "Documents/aaa.png"
NSURL *url = [NSURL fileURLWithPath:filePath]; 
NSArray *items = [NSArray ArrayWithObjects:url,nil];
UIActivityViewController *activityViewController = 
  [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];
[self presentViewController:activityViewController animated:YES completion:nil];

如果只想使用AirDrop而不使用其他分享功能,只需要设置UIActivityViewController的excludedActivityTypes属性即可。  
以下是可以隐藏的对象 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#6.0开始支持
UIKIT_EXTERN NSString *const UIActivityTypePostToFacebook     
UIKIT_EXTERN NSString *const UIActivityTypePostToTwitter      
UIKIT_EXTERN NSString *const UIActivityTypePostToWeibo        
UIKIT_EXTERN NSString *const UIActivityTypeMessage            
UIKIT_EXTERN NSString *const UIActivityTypeMail               
UIKIT_EXTERN NSString *const UIActivityTypePrint              
UIKIT_EXTERN NSString *const UIActivityTypeCopyToPasteboard   
UIKIT_EXTERN NSString *const UIActivityTypeAssignToContact    
UIKIT_EXTERN NSString *const UIActivityTypeSaveToCameraRoll   
#7.0以后新增
UIKIT_EXTERN NSString *const UIActivityTypeAddToReadingList   
UIKIT_EXTERN NSString *const UIActivityTypePostToFlickr       
UIKIT_EXTERN NSString *const UIActivityTypePostToVimeo        
UIKIT_EXTERN NSString *const UIActivityTypePostToTencentWeibo 
UIKIT_EXTERN NSString *const UIActivityTypeAirDrop

具体用法如下,这里只保留AirDrop:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
NSArray *excludedActivities = @[UIActivityTypePostToFacebook, 
                UIActivityTypePostToTwitter,
                UIActivityTypePostToWeibo, 
                UIActivityTypeMessage, 
                UIActivityTypeMail, 
                UIActivityTypePrint,
                UIActivityTypeCopyToPasteboard, 
                UIActivityTypeAssignToContact, 
                UIActivityTypeSaveToCameraRoll, 
                UIActivityTypeAddToReadingList,
                UIActivityTypePostToFlickr, 
                UIActivityTypePostToVimeo, 
                UIActivityTypePostToTencentWeibo]; 
activityViewController.excludedActivityTypes = excludedActivities;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
NSString *filePath = "Documents/aaa.png"
NSURL *url = [NSURL fileURLWithPath:filePath]; 
NSArray *items = [NSArray ArrayWithObjects:url,nil];
UIActivityViewController *activityViewController = 
  [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil]; 
NSArray *excludedActivities = @[UIActivityTypePostToFacebook, 
                UIActivityTypePostToTwitter,
                UIActivityTypePostToWeibo, 
                UIActivityTypeMessage, 
                UIActivityTypeMail, 
                UIActivityTypePrint,
                UIActivityTypeCopyToPasteboard, 
                UIActivityTypeAssignToContact, 
                UIActivityTypeSaveToCameraRoll, 
                UIActivityTypeAddToReadingList,
                UIActivityTypePostToFlickr, 
                UIActivityTypePostToVimeo, 
                UIActivityTypePostToTencentWeibo]; 
activityViewController.excludedActivityTypes = excludedActivities; 
[self presentViewController:activityViewController animated:YES completion:nil];

关于文件路径URL,一般APP的用户数据都在APP的Documents目录下,使用”Documents/aaa.png”的方式即可取得  
如果需要使用Bundle路径下的文件可以使用以下方式 

1
2
3
4
5
6
7
8
9
10
11
12
NSString *fileName=@"aaa.png"
NSArray *fileComponents = [filename componentsSeparatedByString:@"."]; 
NSString *filePath = nil;
if([fileComponents count] == 0) {
}else if([fileComponents count] == 1) {
  filePath = [[NSBundle mainBundle] pathForResource:[fileComponents objectAtIndex:0] 
                                             ofType:nil]; 
}else if([fileComponents count] == 2) {
  filePath = [[NSBundle mainBundle] pathForResource:[fileComponents objectAtIndex:0] 
                                             ofType:[fileComponents objectAtIndex:1]]; 
}
NSURL *url = [NSURL fileURLWithPath:filePath];

本文转载自:http://www.lidaren.com/archives/1269

共有 人打赏支持
S
粉丝 0
博文 1
码字总数 0
作品 0
廊坊
iOS App之间传递数据的几种方式

UIDocumentInteractionController UIActivityViewController Shared Keychain Access Custom URL Scheme Web Service iCloud API UIPasteboard 参考 http://enharmonichq.com/sharing-data-l......

Redding
2014/12/05
0
0
关于文件应用间共享的问题

在做一个文件管理的应用,其中一个功能是在系统已安装的其它App中打开某个文件 第一步需要在UIActivityViewController中列出所有支持改文件类型的已有App,如图: 但是用了UIActivityViewCon...

pixlee
2014/08/21
51
0
LXActivity

LXActivity 实现了类似系统的UIActivityViewController的弹出视图。使用简单,接口调用与UIActionSheet很相似,只要传入两个数组就可以轻松生成类似UIActivityViewController的功能。外观设计...

红薯
2014/03/24
2.1K
0
TTOpenInAppActivity

TTOpenInAppActivity 是一个 UIActivity 的子类,为 UIActivityViewController 提供了 “Open In” 的操作支持。使用一个 UIDocumentInteractionController 来处理特定的 URL 关联的文档。...

匿名
2013/01/14
485
0
App extension 总结

一. 基本知识 1. 定义 简单的说,App Extension 可以让开发者们拓展自定义的功能和内容到应用程序之外,并在用户与其他应用程序或系统交互时提供给用户。 2. 用途 你可以创建一个app extensi...

__小___东邪___
04/12
0
0
JMActionSheetDescription

JMActionSheetDescription 是 ActionSheet 和 UIActivityViewController 的替代品,使用描述器组件。 使用示例: //init your descriptionJMActionSheetDescription *desc = [[JMActionShee......

sikkx
2015/06/23
294
0
UIActivityViewController 子类--URBNShareKit

URBNShareKit 是 UIActivityViewController 子类,可以使用原生的 iOS 分享列表分享内容。

叶秀兰
2015/03/09
230
0
iOS社交分享(自带分享)

社交分享 苹果系统自带分享 第三方分享 了解 比较火的分享平台微信 - 是国内唯一一款没有PC原型的软件 新浪微博 - 苹果在iOS 6集成了 腾讯微博 - 在iOS 7集成的 如何实现社交分享 自己编写...

云上飞飞
2016/07/27
15
0
MDMGiftAppActivity

MDMGiftAppActivity 是 UIActivity 的之类,为 UIActivityViewController 实现了 "Gift App" 功能。

红薯
2013/07/30
306
0
JBWhatsAppActivity

JBWhatsAppActivity 是 UIActivity 的子类,提供了“Share in WhatsApp” 的行为到 UIActivityViewController.

红薯
2013/07/21
302
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Laravel5.5 MySQL配置、读写分离及操作

Laravel 让连接不同数据库以及对数据库进行增删改查操作: 参考:http://laravelacademy.org/post/854.html 配置读写分离 应用的数据库配置位于 config/database.php(但是数据库用户及密码等...

MichaelShu
9分钟前
0
0
Linux 查看用户

存储帐号的文件:/etc/passwd 存储密码的文件:/etc/shadow 查看当前系统所有用户 grep bash /etc/passwd root修改普通用户的密码 sudo passwd user_name 然后连续两次输入新的用户密码即可...

yeahlife
16分钟前
0
0
Webpack使用nodemon实时打包编译

业务场景: 1.编写一个npm组件包并且link到了项目文件中 2.需要不断的修改并run build编译npm包并且在项目run dev 查看效果 3.问题: 每次改完npm包都要手动run build编译十分的麻烦且低效,可不...

JamesView
26分钟前
0
0
电脑炸了,浪费我好几天时间,还是简要记下来吧

我的小本本一直在兢兢业业的干活,然而前几天说炸就炸了...... 爆炸现场: 软件: windows10 pro + EIS11+ 360卫士 BIOS:N1DET98W 2.24 硬件: Xeon E3 1505-V5 nv-M3000M thinkpadP70:20E...

Oh_really
31分钟前
0
0
Git之branch和checkout

1.branch是查看、创建、删除分支 #>git branch --helpNAME git-branch - List, create, or delete branchesSYNOPSIS git branch [--color[=<when>] | --no-color] [......

汉斯-冯-拉特
32分钟前
0
0
Mybatis拦截器之数据权限过滤与分页集成

需求场景 最近项目有个数据权限的业务需求,要求大致为每个单位只能查看本级单位及下属单位的数据,例如:一个集团军下属十二个旅,那么军级用户可以看到所有数据,而每个旅则只能看到本旅部...

佛系程序猿灬
42分钟前
9
0
SpringCloud 微服务 (十六) 服务追踪 Zipkin

问题 在服务中,有一个接口,该A接口中又调用了其他服务的B、C、D接口,出现一个请求耗时大的问题,这时候并不知道该B、C、D接口中哪个接口造成的耗时量,然后比如确定C服务接口出现的耗时量大,但...

___大侠
今天
0
0
Java面试基础篇——第八篇:抽象类与接口的区别

1.抽象类 抽象类:如果一个类中包含有抽象方法,或这个类使用abstract关键字修饰,则称这个类是抽象类。 抽象方法是什么呢?抽象方法就是指用abstract关键字修饰的方法。 需要注意的是:抽象...

developlee的潇洒人生
今天
2
0
jsoup 相关资料

1.jsoup 2.Jsoup概述 3.jsoup入门 4.jsoup Java HTML Parser 1.11.3 API

IT追寻者
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部