文档章节

如何使用UIActivityViewController

S
 SheamUs_lcc
发布于 2016/05/23 16:33
字数 534
阅读 10
收藏 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
iOS 全屏侧滑手势/UIScrollView/UISlider间滑动手势冲突

一、前期准备 有一个支持全屏侧滑返回的视图控制器ViewController,ViewController.view上有一个UIScrollView,UIScrollView上有UISlider。俺直接在之前的示例Demo上演示,简书地址:iOS 自定...

且行且珍惜_iOS
08/17
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

没有更多内容

加载失败,请刷新页面

加载更多

GO 数组相关操作

package mainimport("fmt""math/rand""time")func main() {//数组的几种定义方式var arr1 [3]int = [3]int{1,2,3}var arr2 = [3]int{4,5,6}arr3 := [3]string{"h", "w", ......

汤汤圆圆
28分钟前
1
0
JAVA 中interrupt、interrupted和isInterrupted的区别

首先,我们说明下三个方法的功能 interrupt() 向当前调用者线程发出中断信号 isinterrupted() 查看当前中断信号是true还是false interrupted() 是静态方法,查看返回当前中断信号并将中断信号...

我爱春天的毛毛雨
32分钟前
1
0
Coding and Paper Letter(二十二)

资源整理。 1 Coding: 1.开源项目openeo api。oponEO开发了一个开放的API,以简单统一的方式将R,python和javascript客户端连接到对地观测大数据云平台的后台。 此存储库包含此API,即oponE...

胖胖雕
58分钟前
1
0
RxJS的另外四种实现方式(三)——性能最高的库

接上篇 RxJS的另外四种实现方式(二)——代码最小的库(续) 代码最小的库rx4rx-lite虽然在性能测试中超过了callbag,但和most库较量的时候却落败了,于是我下载了most库,要解开most库性能...

一个灰
今天
5
0
马太效应

马太效应

yizhichao
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部