Android拨打电话

Android拨打电话,第1张

Intent.ACTION_DIAL是Intent指定的打开拨号界面的action,不需要声明权限,data中必须指定对应协议,否则会报错,拨号的协议为tel,后面可拼接电话号码或置空

Intent.ACTION_CALL是Intent指定的直接拨号的action,必须声明权限,否则程序将崩溃

CALL_PHONE是拨打电话功能必须声明的权限,因为涉及用户手机的资费问题,属于Android的一项危险权限。在Android6.0以及更高版本上,在使用危险权限时都必须进行运行时权限处理。所以,首先使用ContextCompat.checkSelfPermission()检测是否已经授权,checkSelfPermission()方法接收两个参数,第一个参数为上下文Context,第二个参数为具体的权限名,返回值和PackageManager.PERMISSION_GRANTED做比较,相等则表示已授权。如果不相等,使用ActivityCompat.requestPermissions()方法来向用户申请授权,requestPermissions()方法接收三个参数,第一个参数为Activity的实例,第二个为String数组,把需要申请的权限名放入数组即可,第三个为请求码,只需要保证其唯一性即可。

调用完requestPermissions()方法后,无论是否同意,都会回调到onRequestPermissionsResult()方法中,授权结果封装在grantResults参数中,requestCode表示唯一的请求码

接听来电

拒接来电:

其中文中的接听电话android6-android7的处理方案是利用了监听通知使用权,所以还要新建一个NotificationListenerService的子类,叫ListenerService,需要在AndroidManifests中配置

另外需要提示用户打开通知使用权才可以正常使用

已测试通过了android6-android9各种机型,注意拒接来电在android9以上才有官方支持,所以需要设置compileSdkVersion=28。

需要的权限为:Manifest.permission.CALL_PHONE,Manifest.permission.READ_PHONE_STATE

8.0以上需要Manifest.permission.ANSWER_PHONE_CALLS,Manifest.permission.READ_CALL_LOG。

还不行的请注意三点:

1:检查权限是否都申请及在manifests里注册了

2:compileSdkVersion是否为28

3:android6到android7的手机的接听来电要依赖通知使用权,所以通知使用权打开才可以正常工作。

上一篇我们已经制作出了一个APP了,但是我们再深入一点点学一下,做一个APP能调用手机打电话的功能。

有语法报错,Alt + Enter,引入这个Intent类和Uri。

import android.content.Intent

import android.net.Uri

知识点:

1)、import 关键字

为了能够使用某一个包的成员,我们需要在 Java 程序中明确导入该包。使用 "import" 语句可完成此功能。

在 java 源文件中 import 语句应位于 package 语句之后,所有类的定义之前,可以没有,也可以有多条,

其语法格式为:import package1[.package2…].(classname|*)

与package对应。比如C#里namespace与using对应。

2)、Intent 启动应用程序内部activity,还可以启动其他应用程序activity,以及发送广播动作。eg:

拨打电话、打开Android系统通话记录页面、拨号界面、发送email、选择相同类型的应用、自定义action等。这里就用到了打电话功能。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7687013.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-08
下一篇2023-04-08

发表评论

登录后才能评论

评论列表(0条)

    保存