2013-12-17 110 views
0

我正在制作一个应用程序,显示您已安装的所有应用程序的列表,然后当我按下它时,我想在我的设备中启动该应用程序。 Im做下面的代码如何以编程方式从已安装的应用程序获取方案?

- (IBAction)openapp:(NSString*)app 
{ 
    urlString = [[NSString alloc]initWithFormat:@"%@:",app.accessibilityLabel];//init string with app name and append it to ":" 

    [urlString stringByReplacingOccurrencesOfString:@" "withString:@""];//remove all spaces 

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];//open URL with scheme 
} 

它在某些情况下工作,该方案是一样的应用程序的名称,但有时失败(例如 - Facebook的方案= FB)。所以,我需要从某个地方获取应用程序的方案。此外,我不能只创建一个NSString并在那里分配一个固定的方案,因为我打开的应用程序将会随着设备而变化。 任何人都可以救我?

回答

0

我不认为这是可能的,因为应用程序的沙盒性质意味着所需的信息不可读。我找不到任何Apple整理列表的参考。

Apple Docs这个引用虽然不是定论,但这意味着这是不可能的,因为甚至无法确定哪个应用程序将打开。

**注意:如果有多个第三方应用程序注册处理相同的URL方案,那么目前没有确定哪个应用程序将被授予该方案的过程。


如果你已经知道你要检查安装了哪些应用程序,这种方法应该是返回:

[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"myScheme://"] 
+0

其实,我已经可以打开任何应用程序。问题是我必须预先确定打开这个应用程序的方案,例如,对于Facebook,我需要用@“fb:”创建一个NSString来打开它,而且我不想做这个手工作。我想要做的是获得从名称打开某个应用程序的方案。我想从Facebook去fb :.但我几乎认为这是不可能的 – BloodOnMyBlade

相关问题