Android 实现打电话和发短信
一、
在 Android 应用开发中,拨打电话和发送短信是两个非常基础且常见的功能,通过调用系统提供的 API,开发者可以轻松地实现这些功能,本文将详细介绍如何在 Android 应用中实现拨打电话和发送短信的功能,并提供相应的代码示例。
二、拨打电话
权限声明
在 AndroidManifest.xml 文件中添加以下权限:
<uses-permission android:name="android.permission.CALL_PHONE"/>
调用拨号界面
要启动拨号界面,可以使用 Intent 来触发系统的拨号应用,以下是一个简单的例子:
String phoneNumber = "123456789"; Intent intent = new Intent(Intent.ACTION_DIAL); intent.setData(Uri.parse("tel:" + phoneNumber)); startActivity(intent);
直接拨打电话
如果希望应用直接拨打电话而不需要用户确认,可以在上述基础上添加 CALL_PHONE 权限,并使用 ACTION_CALL 代替 ACTION_DIAL:
String phoneNumber = "123456789"; Intent intent = new Intent(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:" + phoneNumber)); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { // 请求运行时权限 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, 1); } else { startActivity(intent); }
注意:从 Android 6.0(API 级别 23)开始,所有危险权限(如拨打电话)都需要在运行时请求用户授权。
三、发送短信
权限声明
在 AndroidManifest.xml 文件中添加以下权限:
<uses-permission android:name="android.permission.SEND_SMS"/>
发送短信
发送短信同样需要使用到 Intent,但这次我们使用的是 SmsManager 类来实际发送短信,以下是一个例子:
String phoneNumber = "123456789"; String message = "Hello from Android"; SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(phoneNumber, null, message, null, null);
在这个例子中,sendTextMessage
方法用于发送短信,第一个参数是接收者的电话号码,第二个参数是短信中心号码(通常可以设为 null),第三个参数是要发送的消息内容,最后两个参数分别是用来接收发送状态的 PendingIntent 对象(在这里我们设置为 null)。
请求运行时权限
与拨打电话类似,从 Android 6.0 开始,发送短信也需要请求运行时权限:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.SEND_SMS}, 1); } else { // 发送短信的逻辑 }
四、完整示例
下面是一个完整的示例,展示了如何在 Android 应用中实现拨打电话和发送短信的功能:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button callButton = findViewById(R.id.callButton); Button smsButton = findViewById(R.id.smsButton); callButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { makePhoneCall(); } }); smsButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sendSMS(); } }); } private void makePhoneCall() { String phoneNumber = "123456789"; Intent intent = new Intent(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:" + phoneNumber)); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, 1); } else { startActivity(intent); } } private void sendSMS() { String phoneNumber = "123456789"; String message = "Hello from Android"; SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(phoneNumber, null, message, null, null); } }
这个示例假设你已经在你的布局文件中定义了两个按钮,ID 分别为callButton
和smsButton
,确保已经在 AndroidManifest.xml 中声明了必要的权限。
到此,以上就是小编对于“android实现打电话发短信”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。