Android Intent:电话与短信应用实战

需积分: 10 6 下载量 40 浏览量 更新于2024-07-24 收藏 716KB PDF 举报
"Android 电话与短信应用文档" 在Android系统中,电话与短信功能是核心组件,对于开发者来说,理解如何使用Intent进行交互至关重要。Intent是Android中的一个关键概念,它是一个意图对象,用于在应用的不同组件之间进行通信,尤其是启动或激活Activity、Service和BroadcastReceiver。 5.1 Intent详解 Intent作为运行时绑定机制,允许程序在运行过程中动态连接不同的组件。通过Intent,开发者可以表达应用的需求,Android系统则根据Intent的内容选择合适的组件响应。例如,当一个Activity想要打开浏览器浏览网页时,只需创建一个包含WEB_SEARCH_ACTION请求的Intent,Android会自动找到已注册并能处理此类请求的浏览器Activity。 Intent主要有两种类型:显式Intent和隐式Intent。显式Intent直接指定目标组件的类名,而隐式Intent不指定具体接收者,而是基于Intent的动作(Action)、数据(Data)、类别(Category)等元数据匹配适合的组件。 1. 启动Activity 若要启动新的Activity或让现有Activity执行新操作,可以使用`Context.startActivity()`或`Activity.startActivityForResult()`方法。这两个方法都需要传递一个Intent参数,这个Intent包含了要执行的操作信息。 2. 电话应用开发 在Android中,拨打电话通常通过隐式Intent实现。可以创建一个包含ACTION_CALL或ACTION_DIAL动作的Intent,并设置电话号码的数据URI。ACTION_CALL会直接拨打电话,ACTION_DIAL则打开拨号器界面供用户确认拨打。 ```java Intent callIntent = new Intent(Intent.ACTION_CALL); callIntent.setData(Uri.parse("tel:" + phoneNumber)); if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { // 请求权限 } else { startActivity(callIntent); } ``` 3. 发送短信 发送短信同样使用Intent,但需要使用ACTION_SENDTO动作,并指定SMS_URI。此外,由于涉及到敏感操作,需要检查`Manifest.permission.SEND_SMS`权限。 ```java Intent sendIntent = new Intent(Intent.ACTION_SENDTO); sendIntent.setData(Uri.parse("smsto:" + recipientNumber)); sendIntent.putExtra("sms_body", messageContent); if (ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) { // 请求权限 } else { startActivity(sendIntent); } ``` 4. BroadcastReceiver与Intent BroadcastReceiver是接收系统广播事件的组件,比如接收到短信时的广播。可以通过在AndroidManifest.xml中注册BroadcastReceiver,或在代码中动态创建并注册。当接收到特定Intent时,BroadcastReceiver的`onReceive()`方法会被调用。 总结来说,Intent是Android组件间通信的关键工具,它使得电话和短信功能的实现变得简单且灵活。开发者需要掌握Intent的使用,才能充分利用Android系统的强大功能,构建出功能丰富的电话与短信应用。