23 votes

Est-il possible d'ouvrir l'application Paramètres en utilisant openURL ?

Je sais qu'une application peut lancer d'autres applications en utilisant ce code : [[UIApplication sharedApplication] openURL:appUrl]; . Et je connais le schéma de l'URL pour ouvrir safari et mail, mais j'ai fait quelques recherches et je n'ai rien trouvé sur le schéma de settings.app.

33voto

Yatheesha Points 1645

Vous pouvez ouvrir les applications de paramétrage de manière programmatique en essayant ceci (fonctionne seulement à partir de iOS8 et plus).

Si vous utilisez Swift :

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

Si vous utilisez Objective-C

   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

Pour les autres versions inférieures (moins de iOS8 ) il n'est pas possible d'ouvrir l'application Paramètres de manière programmée.

16voto

davidcann Points 1005

Vous pouvez l'utiliser dans les versions iOS 5.0 - 5.0.1. Il a ensuite été déprécié dans iOS 5.1.

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];

3voto

L'ouverture programmée des applications de paramètres n'est possible qu'à partir d'iOS 8. Ainsi, utilisez le code suivant de http://code-ios.blogspot.in/2014/10/opening-settings-app-from-another-app.html

if([CLLocationManager locationServicesEnabled]&&
   [CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied)
{
  //...Location service is enabled
}
else
{
    if([[[UIDevice currentDevice] systemVersion] floatValue]<8.0)
    {
    UIAlertView* curr1=[[UIAlertView alloc] initWithTitle:@"This app does not have access to Location service" message:@"You can enable access in Settings->Privacy->Location->Location Services" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    [curr1 show];
    }
    else
    {
        UIAlertView* curr2=[[UIAlertView alloc] initWithTitle:@"This app does not have access to Location service" message:@"You can enable access in Settings->Privacy->Location->Location Services" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Settings", nil];
        curr2.tag=121;
        [curr2 show];
    }
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
 NSLog(@"buttonIndex:%d",buttonIndex);

   if (alertView.tag == 121 && buttonIndex == 1)
 {
  //code for opening settings app in iOS 8
   [[UIApplication sharedApplication] openURL:[NSURL  URLWithString:UIApplicationOpenSettingsURLString]];
 }
}

1voto

jonaszmclaren Points 1547

Swift 4 version :

if let url = URL(string: UIApplicationOpenSettingsURLString) {
    UIApplication.shared.openURL(url)
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X