当前位置:首页 > 行业动态 > 正文

如何在Android平台上实现打电话和发送短信的功能?

在android中,可以通过调用telephonymanager的getphonetype方法获取设备类型,然后使用intent来拨打电话或发送短信。

Android 实现打电话和发短信

如何在Android平台上实现打电话和发送短信的功能?  第1张

一、

在 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实现打电话发短信”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。

0