通过在iOS 5.1.1中无效的代码打开iPhone设置

时间:2012-06-25 12:37:00

标签: iphone objective-c location ios5.1

我试过这些命令 -

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"]];    
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=General"]];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=Wallpaper"]];    
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=Safari"]];

这些代码分别在iOS 5.0中打开位置,常规,壁纸和Safari,但在iOS 5.1.1中无效 有人有任何想法吗?

2 个答案:

答案 0 :(得分:5)

在iOS 5.1中,prefs:网址方案已被删除。你不能再使用它了。

如果使用私有API是一个选项,您可以尝试:

SBSLaunchApplicationWithIdentifier(CFSTR("com.apple.Preferences"), false);

然后你必须链接SpringBoardServices框架。

答案 1 :(得分:0)

快速添加@ H2CO3的答案(不适用于评论)。我在我的Cydia应用程序中使用该解决方案来打开设置,并结合包含以下条目的权利文件:

<key>com.apple.springboard.launchapplications</key>
<string>true</string>

这是我相信Xcode格式化权利文件的方式。这在我的两个测试设备上运行良好。但是,一些beta测试者提到设置应用程序没有打开。我注意到权利文件的几个示例使用不同的格式来指示密钥的值:

<true/>

我在没有使用第一个权利条目的设备上尝试了这个,并且实际打开了设置应用。

所以我发布这个以防其他人有类似的问题。 (以root身份运行应用程序也可能是一种解决方案,但我没有尝试过。)