2009-07-07 14 views
22

Wiem, że aplikacja może uruchamiać inne aplikacje przy użyciu tego kodu: [[UIApplication sharedApplication] openURL:appUrl];. I znam schemat URL, aby otworzyć safari i pocztę, ale zrobiłem kilka wyszukiwań i nie znalazłem nic o schemacie settings.app.Czy można otworzyć aplikację Ustawienia za pomocą metody openURL?

+1

możliwe duplikat [Otwieranie aplikacji Ustawienia z innej aplikacji] (http://stackoverflow.com/questions/5655674/opening-the-settings-app-from-another-app) – Flexo

+0

Myślę [to pytanie] (http://stackoverflow.com/questions/377102/how-do-i-open-the-settings-application-fr om-my-application) odpowiada na to. –

+1

Sprawdź tę odpowiedź: http://stackoverflow.com/questions/28152526/how-do-i-open-phone-settings-when-a-button-is-clicked-ios/34024467#34024467 –

Odpowiedz

16

Możesz użyć tego w wersjach 5.0 i 5.0.1 systemu iOS. Został następnie przestarzały w systemie iOS 5.1.

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

Nie działa już w iOS 5.1. – mrueg

+0

coś dla> iOS 5.1? –

31

Można otworzyć ustawienia apps programowo spróbować (działa tylko z systemów iOS 8 r).

Jeśli używasz SWIFT:

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

Jeśli używasz Objective-C

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

Dla innych niższych wersjach (mniej niż systemów iOS 8) jej nie można programowo otwarty ustawienia aplikacji .

+0

Wielkie kciuki do góry! To jest świetne. Testowałem na iOS 7.1 i na pewno uszkodziłem aplikację, kiedy uruchomiłem system iOS 8, który przenosi Cię do Apple Settings –

+7

czy jest sposób, aby otworzyć aplikację General Settings (najwyższy poziom), a nie przewiercić do własnych ustawień aplikacji ? – zonabi

3

ustawienia otwarcia aplikacje programowo jest możliwe tylko z iOS 8. Tak więc, należy użyć następującego kodu z 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]]; 
} 
} 
+0

Mimo że użytkownik nie ma nad nim dużej kontroli, możesz dodać opcję [CLLocationManager authorizationStatus]! = KCLAuthorizationStatusRestricted –

0

Swift 4 wersja:

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