2013-12-17 113 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

相關問題