app调用系统电话

本文介绍如何在iOS应用中调用系统电话和地图功能,并提供代码示例。此外,还介绍了如何根据设备类型调整功能可用性及保持屏幕常亮的方法。

调用系统打电话的功能

打电话功能仅仅有iPhone支持,对于其它设备相应button应该禁用。

//直接调用系统电话呼叫功能,挂断电话后不能回到应用程序

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


//调用系统电话呼叫功能前要给出提示,挂断电话后能回到应用程序

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


//同理,也能够调用系统的地图,短信等功能

openURL能帮助你执行Maps,SMS,Browser,Phone甚至其它的应用程序。这是Iphone开发中我常常须要用到的一段代码,它只唯独一行而已。


区分设备类型的方法

//推断是iPhone还是iPad
 用[UIDevice currentDevice].model,这个返回的是一个NSString,你能够做例如以下推断就能知道设备是iPad还是iPhone.

if ([UIDevice currentDevice].model rangeOfString:@"iPad"].location != NSNotFound) 

     NSLog(@"This is an iPad!"); 


用UI_USER_INTERFACE_IDIOM()方法,这是系统定义的一条宏。用法也非常easy。

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 

     NSLog(@"This is an iPad!"); 


推断设备类型和型号

<span style="color:#333333;background-color: rgb(255, 204, 204);">- (NSString*) doDevicePlatform
{
    size_t size;
    int nR = sysctlbyname("hw.machine", NULL, &size, NULL, 0);
    char *machine = (char *)malloc(size);
    nR = sysctlbyname("hw.machine", machine, &size, NULL, 0);
    NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];
    free(machine);
    
    if ([platform isEqualToString:@"iPhone1,1"]) {
        
        platform = @"iPhone";
        
    } else if ([platform isEqualToString:@"iPhone1,2"]) {
        
        platform = @"iPhone 3G";
        
    } else if ([platform isEqualToString:@"iPhone2,1"]) {
        
        platform = @"iPhone 3GS";
        
    } else if ([platform isEqualToString:@"iPhone3,1"]||[platform isEqualToString:@"iPhone3,2"]||[platform isEqualToString:@"iPhone3,3"]) {
        
        platform = @"iPhone 4";
        
    } else if ([platform isEqualToString:@"iPhone4,1"]) {
        
        platform = @"iPhone 4S";
        
    } else if ([platform isEqualToString:@"iPhone5,1"]||[platform isEqualToString:@"iPhone5,2"]) {
        
        platform = @"iPhone 5";
        
    }else if ([platform isEqualToString:@"iPhone5,3"]||[platform isEqualToString:@"iPhone5,4"]) {
        
        platform = @"iPhone 5C";
        
    }else if ([platform isEqualToString:@"iPhone6,2"]||[platform isEqualToString:@"iPhone6,1"]) {
        
        platform = @"iPhone 5S";
        
    }else if ([platform isEqualToString:@"iPod4,1"]) {
        
        platform = @"iPod touch 4";
        
    }else if ([platform isEqualToString:@"iPod5,1"]) {
        
        platform = @"iPod touch 5";
        
    }else if ([platform isEqualToString:@"iPod3,1"]) {
        
        platform = @"iPod touch 3";
        
    }else if ([platform isEqualToString:@"iPod2,1"]) {
        
        platform = @"iPod touch 2";
        
    }else if ([platform isEqualToString:@"iPod1,1"]) {
        
        platform = @"iPod touch";
        
    } else if ([platform isEqualToString:@"iPad3,2"]||[platform isEqualToString:@"iPad3,1"]) {
        
        platform = @"iPad 3";
        
    } else if ([platform isEqualToString:@"iPad2,2"]||[platform isEqualToString:@"iPad2,1"]||[platform isEqualToString:@"iPad2,3"]||[platform isEqualToString:@"iPad2,4"]) {
        
        platform = @"iPad 2";
        
    }else if ([platform isEqualToString:@"iPad1,1"]) {
        
        platform = @"iPad 1";
        
    }else if ([platform isEqualToString:@"iPad2,5"]||[platform isEqualToString:@"iPad2,6"]||[platform isEqualToString:@"iPad2,7"]) {
        
        platform = @"ipad mini";
        
    } else if ([platform isEqualToString:@"iPad3,3"]||[platform isEqualToString:@"iPad3,4"]||[platform isEqualToString:@"iPad3,5"]||[platform isEqualToString:@"iPad3,6"]) {
        
        platform = @"ipad 3";
        
    }
    
    return platform;
}</span>


当设备在执行程序时永不锁屏

[[UIApplicationsharedApplication]setIdleTimerDisabled:YES];

在安卓系统中,系统自带的电话应用可用于拨打电话。此外,开发者也能开发具备拨打电话功能的应用。在开发这类应用时,需要在`AndroidManifest.xml`中声明`READ_PHONE_STATE`和`CALL_PHONE`权限,并且在应用运行时请求`CALL_PHONE`权限,还可通过`Intent`启动电话拨号界面或直接拨打电话号码,同时要注意不同Android版本中权限管理的重要性。例如,有开发者从【智能拨号器SDK】的角度,对手机app的架构进行梳理,以实现AI电话机器人接打电话功能,让用户app能在不局限于某一品牌或型号手机的情况下,实现比“小爱通话”等AI电话专有应用更灵活强大的功能 [^1][^3]。 同时,在uni - app App端(安卓APP)开发中,也涉及拨打电话功能,不过有时会出现使用`uni.makePhoneCall`只提示调用成功却不能拨打电话等问题,也有针对此的解决办法,且这些方案能完美兼容安卓手机 [^2]。 ```java // 示例代码:使用Intent拨打电话 import android.content.Intent; import android.net.Uri; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 要拨打的电话号码 String phoneNumber = "10086"; // 创建一个Intent对象,用于拨打电话 Intent intent = new Intent(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:" + phoneNumber)); // 检查是否有拨打电话的权限 if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值