開(kāi)發(fā)中我們調(diào)用系統(tǒng)的打電話方法,一般都是用數(shù)字電話號(hào)去調(diào)用,如果遇到號(hào)碼中包含特殊字符時(shí)直接調(diào)用撥打電話是行不通的
實(shí)驗(yàn)發(fā)現(xiàn)就算轉(zhuǎn)換UTF8編碼也是不可撥打
可用下面的三種方法對(duì)號(hào)碼字符串做處理
第一種 :
// 特殊字符處理
NSString *commandStr = @"*#21#";
NSString *str1 = [commandStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
第二種 :
NSString *commandStr = @"*#21#";
NSString *str2 = CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)commandStr, (CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]", NULL, kCFStringEncodingUTF8));
第三種 :
NSString *commandStr = @"*#21#";
NSString *reportName = [commandStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"?!@#$^&%*+,:;='\"`<>()[]{}/\\| "].invertedSet];
再撥打就歐了
NSMutableString *str = [[NSMutableString alloc] initWithFormat:@"telprompt://%@",str1];
NSURL *callUrl = [NSURL URLWithString:str];
if (@available(iOS 10.0, *)) {
[[UIApplication sharedApplication] openURL:callUrl options:@{} completionHandler:nil];
} else {
// Fallback on earlier versions
if([[UIApplication sharedApplication] canOpenURL:callUrl]){
[[UIApplication sharedApplication] openURL:callUrl];
}
}
要是給您解決問(wèn)題了,來(lái)給俺點(diǎn)個(gè)贊????