有没有办法获取设备上安装的应用程序列表,它能够共享和接收文本数据

Posted

技术标签:

【中文标题】有没有办法获取设备上安装的应用程序列表,它能够共享和接收文本数据【英文标题】:Is there way to get list of installed app on device, which is able to share and receive text data 【发布时间】:2015-06-19 10:17:40 【问题描述】:

喜欢与 Whatsapp 共享文本数据的代码如下。 我想知道设备上所有已安装的能够获取文本数据的应用程序,如下面提到的代码。

 NSString * msg = @"YOUR MSG"; NSString * urlWhats = [NSString stringWithFormat:@"whatsapp://send?text=%@",msg]; NSURL * whatsappURL = [NSURL URLWithString:[urlWhats stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; if ([[UIApplication sharedApplication] canOpenURL: whatsappURL]) 
        [[UIApplication sharedApplication] openURL: whatsappURL];  else 
        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"WhatsApp not installed." message:@"Your device has no WhatsApp installed." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show]; 

【问题讨论】:

正确的做法是在一个方向使用 ShareSheet,在另一个方向使用 Share Extension 【参考方案1】:

与 twitter/facebook 以外的其他社交应用共享文本、数据。你可以试试下面的代码:

NSString *shareString = @"text...";
UIImage *shareImage = [UIImage imageNamed:@"image.png"];
NSURL *shareUrl = [NSURL URLWithString:@"http://www.test.com"];

NSArray *activityItems = [NSArray arrayWithObjects:shareString, shareImage, shareUrl, nil];

UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
activityViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

[self presentViewController:activityViewController animated:YES completion:nil];

它将显示显示所有其他文本共享应用程序的活动视图。

或者您也可以创建自定义 UIActivity。 在您的自定义 UIActivity 子类中,您必须简单地覆盖一种方法:

+ (UIActivityCategory)activityCategory

   return UIActivityCategoryShare;

【讨论】:

【参考方案2】:

有 UIActivityViewController 列出所有应用程序,您可以在其中分享您的文本。您可以通过那里的“更多”选项自定义列表。具有共享扩展名的应用程序也会自动在此处列出。

【讨论】:

以上是关于有没有办法获取设备上安装的应用程序列表,它能够共享和接收文本数据的主要内容,如果未能解决你的问题,请参考以下文章

通过 unc 获取/设置 azure 文件的元数据

两个安卓设备之间的屏幕共享

有没有办法从主机应用程序获取应用程序组标识符并在 iOS 上共享扩展程序?

Android 获取 应用列表 方法记录

获取已连接的蓝牙 LE 设备列表

Kibana - 获取所有索引的列表