java 拨打电话_快速拨打电话号码

回答(18)

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

试一试:

if let url = NSURL(string: "tel://\(busPhone)") where UIApplication.sharedApplication().canOpenURL(url) {

UIApplication.sharedApplication().openURL(url)

}

假设电话号码在 busPhone .

NSURL 的 init(string:) 返回一个Optional,所以通过使用 if let ,我们确保 url 是 NSURL (而不是 init 返回的 NSURL? ) .

For Swift 3:

if let url = URL(string: "tel://\(busPhone)"), UIApplication.shared.canOpenURL(url) {

if #available(iOS 10, *) {

UIApplication.shared.open(url)

} else {

UIApplication.shared.openURL(url)

}

}

我们需要检查我们是否在iOS 10或更高版本上,因为:

'openURL'在iOS 10.0中已弃用

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

iOS 10中的自包含解决方案, Swift 3 :

private func callNumber(phoneNumber:String) {

if let phoneCallURL = URL(string: "tel://\(phoneNumber)") {

let application:UIApplication = UIApplication.shared

if (application.canOpenURL(phoneCallURL)) {

application.open(phoneCallURL, options: [:], completionHandler: nil)

}

}

}

您应该可以使用 callNumber("7178881234") 拨打电话 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

Swift 3.0和ios 10或更早版本

func phone(phoneNum: String) {

if let url = URL(string: "tel://\(phoneNum)") {

if #available(iOS 10, *) {

UIApplication.shared.open(url, options: [:], completionHandler: nil)

} else {

UIApplication.shared.openURL(url as URL)

}

}

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

好的,我得到了帮助并想出来了 . 此外,我还放了一个漂亮的小警报系统,万一电话号码无效 . 我的问题是我说它是正确的,但数字有空格和不需要的字符,如(“123 456-7890”) . 如果您的号码是(“1234567890”),则UIApplication仅适用或接受 . 因此,您基本上通过创建一个新变量来仅删除数字来删除空格和无效字符 . 然后使用UIApplication调用这些数字 .

func callSellerPressed (sender: UIButton!){

var newPhone = ""

for (var i = 0; i < countElements(busPhone); i++){

var current:Int = i

switch (busPhone[i]){

case "0","1","2","3","4","5","6","7","8","9" : newPhone = newPhone + String(busPhone[i])

default : println("Removed invalid character.")

}

}

if (busPhone.utf16Count > 1){

UIApplication.sharedApplication().openURL(NSURL(string: "tel://" + newPhone)!)

}

else{

let alert = UIAlertView()

alert.title = "Sorry!"

alert.message = "Phone number is not available for this business"

alert.addButtonWithTitle("Ok")

alert.show()

}

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

以上答案部分正确,但“tel://”只有一个问题 . 通话结束后,它将返回主屏幕,而不是我们的应用程序 . 所以最好使用“telprompt://”,它将返回到应用程序 .

var url:NSURL = NSURL(string: "telprompt://1234567891")!

UIApplication.sharedApplication().openURL(url)

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

我在我的应用程序中使用此方法,它工作正常 . 我希望这对你也有帮助 .

func makeCall(phone: String) {

let formatedNumber = phone.componentsSeparatedByCharactersInSet(NSCharacterSet.decimalDigitCharacterSet().invertedSet).joinWithSeparator("")

let phoneUrl = "tel://\(formatedNumber)"

let url:NSURL = NSURL(string: phoneUrl)!

UIApplication.sharedApplication().openURL(url)

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

Swift 3,iOS 10

func call(phoneNumber:String) {

let cleanPhoneNumber = phoneNumber.components(separatedBy: CharacterSet.decimalDigits.inverted).joined(separator: "")

let urlString:String = "tel://\(cleanPhoneNumber)"

if let phoneCallURL = URL(string: urlString) {

if (UIApplication.shared.canOpenURL(phoneCallURL)) {

UIApplication.shared.open(phoneCallURL, options: [:], completionHandler: nil)

}

}

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

在Swift 3中,

if let url = URL(string:"tel://\(phoneNumber)"), UIApplication.shared.canOpenURL(url) {

UIApplication.shared.openURL(url)

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

这是使用Swift 2.0更新@ Tom的答案注 - 这是我正在使用的整个CallComposer类 .

class CallComposer: NSObject {

var editedPhoneNumber = ""

func call(phoneNumber: String) -> Bool {

if phoneNumber != "" {

for i in number.characters {

switch (i){

case "0","1","2","3","4","5","6","7","8","9" : editedPhoneNumber = editedPhoneNumber + String(i)

default : print("Removed invalid character.")

}

}

let phone = "tel://" + editedPhoneNumber

let url = NSURL(string: phone)

if let url = url {

UIApplication.sharedApplication().openURL(url)

} else {

print("There was an error")

}

} else {

return false

}

return true

}

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

我正在使用swift 3解决方案进行数字验证

var validPhoneNumber = ""

phoneNumber.characters.forEach {(character) in

switch character {

case "0"..."9":

validPhoneNumber.characters.append(character)

default:

break

}

}

if UIApplication.shared.canOpenURL(URL(string: "tel://\(validNumber)")!){

UIApplication.shared.openURL(URL(string: "tel://\(validNumber)")!)

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

openURL()已在iOS 10中弃用 . 以下是新语法:

if let url = URL(string: "tel://\(busPhone)") {

UIApplication.shared.open(url, options: [:], completionHandler: nil)

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

For swift 3.0

if let url = URL(string: "tel://\(number)"), UIApplication.shared.canOpenURL(url) {

if #available(iOS 10, *) {

UIApplication.shared.open(url)

} else {

UIApplication.shared.openURL(url)

}

}

else {

print("Your device doesn't support this feature.")

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

斯威夫特4,

private func callNumber(phoneNumber:String) {

if let phoneCallURL = URL(string: "telprompt://\(phoneNumber)") {

let application:UIApplication = UIApplication.shared

if (application.canOpenURL(phoneCallURL)) {

if #available(iOS 10.0, *) {

application.open(phoneCallURL, options: [:], completionHandler: nil)

} else {

// Fallback on earlier versions

application.openURL(phoneCallURL as URL)

}

}

}

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

Swift 3.0解决方案:

let formatedNumber = phone.components(separatedBy: NSCharacterSet.decimalDigits.inverted).joined(separator: "")

print("calling \(formatedNumber)")

let phoneUrl = "tel://\(formatedNumber)"

let url:URL = URL(string: phoneUrl)!

UIApplication.shared.openURL(url)

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

这是使用 Scanner 将电话号码减少为有效组件的另一种方法...

let number = "+123 456-7890"

let scanner = Scanner(string: number)

let validCharacters = CharacterSet.decimalDigits

let startCharacters = validCharacters.union(CharacterSet(charactersIn: "+#"))

var digits: NSString?

var validNumber = ""

while !scanner.isAtEnd {

if scanner.scanLocation == 0 {

scanner.scanCharacters(from: startCharacters, into: &digits)

} else {

scanner.scanCharacters(from: validCharacters, into: &digits)

}

scanner.scanUpToCharacters(from: validCharacters, into: nil)

if let digits = digits as? String {

validNumber.append(digits)

}

}

print(validNumber)

// +1234567890

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

Swift 3.0 & iOS 10+

UIApplication.shared.openURL(url) 已更改为 UIApplication.shared.open(_ url: URL, options:[:], completionHandler completion: nil)

选项和完成处理程序是可选的,呈现:

UIApplication.shared.open(url)

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

对于Swift 3.1和向后兼容的方法,请执行以下操作:

@IBAction func phoneNumberButtonTouched(_ sender: Any) {

if let number = place?.phoneNumber {

makeCall(phoneNumber: number)

}

}

func makeCall(phoneNumber: String) {

let formattedNumber = phoneNumber.components(separatedBy:

NSCharacterSet.decimalDigits.inverted).joined(separator: "")

let phoneUrl = "tel://\(formattedNumber)"

let url:NSURL = NSURL(string: phoneUrl)!

if #available(iOS 10, *) {

UIApplication.shared.open(url as URL, options: [:], completionHandler:

nil)

} else {

UIApplication.shared.openURL(url as URL)

}

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

如果您的电话号码包含空格,请先将其删除!然后你可以使用accepted answer's解决方案 .

let numbersOnly = busPhone.replacingOccurrences(of: " ", with: "")

if let url = URL(string: "tel://\(numbersOnly)"), UIApplication.shared.canOpenURL(url) {

if #available(iOS 10, *) {

UIApplication.shared.open(url)

} else {

UIApplication.shared.openURL(url)

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值