如何以编程方式打开设置应用程序?

Posted

技术标签:

【中文标题】如何以编程方式打开设置应用程序?【英文标题】:How to open settings app programmatically? 【发布时间】:2015-09-21 21:19:33 【问题描述】:

我在 ios 8.3 中使用 swift。我想从我的应用程序中打开设置应用程序。我知道使用代码

UIApplication.sharedApplication().openURL(NSURL(string: UIApplicationOpenSettingsURLString)!)

将打开我的应用设置。但我不想打开我的应用设置。我只想打开设置应用程序并留在主页上。如果可能,导航到“蜂窝网络”。有什么办法可以实现吗?

【问题讨论】:

你好,你找到打开设置主页的解决方案了吗? 没有。我认为我的问题没有解决方案 【参考方案1】:

试试这个。

if let appSettings = URL(string: UIApplication.openSettingsURLString) 
    UIApplication.shared.open(appSettings, options: [:], completionHandler: nil)

Xcode 11.5 - iOS > 10

【讨论】:

这应该被标记为正确答案;其他人使用可能导致 App Store 拒绝的 iOS 内部结构。 这是在 iOS 12 上打开我的应用设置 目前甚至无法打开主设置屏幕(使用公共 API),只能在设置中打开应用程序的设置。【参考方案2】:

是的,他们在 iOS 10 中进行了更改,请将“prefs:”更改为“App-Prefs:”

guard let profileUrl = URL(string:"App-Prefs:root=General&path=ManagedConfigurationList") else 
    return


if UIApplication.shared.canOpenURL(profileUrl) 
    UIApplication.shared.open(profileUrl, completionHandler:  (success) in
        print(" Profile Settings opened: \(success)")
    )


【讨论】:

这是一个 hack,将导致 App Store 拒绝。 呼,真的,感谢您提供的信息,Sibir,还有其他选择吗? @BoosaRamesh 看起来不像。 :(【参考方案3】:

2016 年 10 月 11 日更新:

iOS10 不再支持。到目前为止,我还没有找到任何解决方法。如果你们有任何解决方案,请告诉我。谢谢。

========================================

如果 iOS 版本

你可以这样做:

    let url:NSURL! = NSURL(string : "prefs:root=")
    UIApplication.sharedApplication().openURL(url)

我在 github 上有一个演示:http://github.com/zhihuitang/SettingDemo.git

您可以找到所有可用的 URL,如下所示: http://iphonedevwiki.net/index.php/Preferences.app Preferences 应用注册了一个私有 URL 方案,prefs:,下面的列表详细介绍了打开特定视图1[2]

prefs:root=General&path=About
prefs:root=General&path=ACCESSIBILITY
prefs:root=AIRPLANE_MODE
prefs:root=General&path=AUTOLOCK
prefs:root=General&path=USAGE/CELLULAR_USAGE
prefs:root=General&path=Bluetooth
prefs:root=General&path=DATE_AND_TIME
prefs:root=FACETIME
prefs:root=General
prefs:root=General&path=Keyboard
prefs:root=CASTLE
prefs:root=CASTLE&path=STORAGE_AND_BACKUP
prefs:root=General&path=INTERNATIONAL
prefs:root=LOCATION_SERVICES
prefs:root=ACCOUNT_SETTINGS
prefs:root=MUSIC
prefs:root=MUSIC&path=EQ
prefs:root=MUSIC&path=VolumeLimit
prefs:root=General&path=Network
prefs:root=NIKE_PLUS_IPOD
prefs:root=NOTES
prefs:root=NOTIFICATIONS_ID
prefs:root=Phone
prefs:root=Photos
prefs:root=General&path=ManagedConfigurationList
prefs:root=General&path=Reset
prefs:root=Sounds&path=Ringtone
prefs:root=Safari
prefs:root=General&path=Assistant
prefs:root=Sounds
prefs:root=General&path=SOFTWARE_UPDATE_LINK
prefs:root=STORE
prefs:root=TWITTER
prefs:root=General&path=USAGE
prefs:root=VIDEO
prefs:root=General&path=Network/***
prefs:root=Wallpaper
prefs:root=WIFI
prefs:root=INTERNET_TETHERING

希望这对你有帮助。

【讨论】:

我现在正在使用该代码。 Sachin Rocken,你能把你的代码贴在这里吗?让我们看看是什么问题。 让 url:NSURL! = NSURL(string : "prefs:root=General") UIApplication.sharedApplication().openURL(url) 那不行。 @User9527 ,我试过你的代码。在 viewdidload 中,我使用了 let url:NSURL! = NSURL(string : "prefs:root=") UIApplication.sharedApplication().openURL(url) 并且它不工作。我不知道它是如何为你工作的。您能否提供一个使用任何可用共享服务的示例项目。 有人得到iOS 10的解决方案吗? 此 API 是私有的,如果您想将其发送到商店,Apple 很可能会拒绝您的应用。

以上是关于如何以编程方式打开设置应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式在应用程序设置中打开应用程序权限窗口[重复]

如何在 iOS 8.0+ 中以编程方式打开设备设置应用程序而不是应用程序设置

如何以编程方式在 Android Q 中打开设置面板?

从另一个应用程序以编程方式在 iOS 设置应用程序中打开键盘设置屏幕

如何在UWP中以编程方式在设置中打开位置服务?

如何以编程方式设置根视图控制器?