如何与其他应用分享我的应用中的Install-Package Microsoft.jQuery.Unobtrusive.Ajax
?它可能指向Dropbox文件,google驱动器文件,本地#import <AddressBook/AddressBook.h>
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
ABAddressBookRef addressBook = ABAddressBookCreate();
__block BOOL accessGranted = NO;
if (ABAddressBookRequestAccessWithCompletion != NULL) { // We are on iOS 6
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
accessGranted = granted;
dispatch_semaphore_signal(semaphore);
});
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
}
else { // We are on iOS 5 or Older
accessGranted = YES;
[self getContactsWithAddressBook:addressBook];
}
if (accessGranted) {
[self getContactsWithAddressBook:addressBook];
}
}
// Get the contacts.
- (void)getContactsWithAddressBook:(ABAddressBookRef )addressBook
{
//----------------------------------------------- create vcf file------------------------------------------
CFArrayRef contacts = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFDataRef vcards = (CFDataRef)ABPersonCreateVCardRepresentationWithPeople(contacts);
NSString *vcardString = [[NSString alloc] initWithData:(__bridge NSData *)(vcards) encoding:NSUTF8StringEncoding];
NSError *error;
NSFileManager *fileMgr = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *folderPath = [paths objectAtIndex:0];
NSString *filePath = [folderPath stringByAppendingPathComponent:@"contacts.vcf"];
NSLog(@"%@===>",filePath);
[vcardString writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];
NSLog(@"Documents directory: %@",[fileMgr contentsOfDirectoryAtPath: folderPath error:&error]);
}
或本地Uri
。
我的应用有权阅读File
,现在我想与其他应用分享并传递权限。我该怎么做?
我真的必须编写自己的内容提供商吗?
答案 0 :(得分:2)
我真的必须编写自己的内容提供商吗?
您无法强制第三方提供商(例如,Dropbos,Google云端硬盘)授予对单独第三方应用的访问权限。这类似于我能够授予其他人访问您的银行帐户的权限,因为您允许我访问您的银行帐户。
整体共享机制专为您管理的内容或简单内容(例如纯文本)而设计。
您的选择是:
不要分享您不管理的内容。
制作内容的本地副本(在文件中)并分享,例如通过ContentProvider
。
尝试创建一个代理ContentProvider
,一个读取内容并通过管道直接提供的代理,而不是从包含内容副本的本地文件提供服务。对于ACTION_SEND
,这可能有效,但请记住,管道支持的流不可搜索,因此某些类型的应用程序(如媒体播放器)不喜欢管道支持的流。