发短信和打电话

我们做一个这样的界面

 

 

1、点击按钮,可以唤起 打电话 、发短信的界面

2、长按按钮,直接拨号和发送短信

我们通过在界面上绑定点击监听

            <Button
                android:id="@+id/btn_call"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="拨打电话"
                android:onClick="jumpCall"/>
            <Button
                android:id="@+id/btn_sms"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="发送短信"
                android:onClick="jumpSendMessage"/>

 

通过实现 OnLongClickListener接口,绑定长按监听

 

 然后进行绑定

btn_call.setOnLongClickListener(this);
btn_sms.setOnLongClickListener(this);

 

然后实现方法即可。这里要注意的是,Android 6.0 之后,在申明权限外,还要动态申请权限

if (checkSelfPermission(permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {
    // TODO: Consider calling
    //    Activity#requestPermissions
    // here to request the missing permissions, and then overriding
    //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
    //                                          int[] grantResults)
    // to handle the case where the user grants the permission. See the documentation
    // for Activity#requestPermissions for more details.
    ActivityCompat.requestPermissions(this, new String[]{permission.SEND_SMS}, 1);
    //ActivityCompat.shouldShowRequestPermissionRationale(this, permission.CALL_PHONE);
    return;
}

 

 给出完整的界面布局

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="20dp"
        >
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="请输入电话号码:">

            </TextView>
            <EditText
                android:id="@+id/editText_number"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:hint="请输入电话号码"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="请输入短信内容:"/>
            <EditText
                android:id="@+id/editText_message"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:hint="在此输入短信内容"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <Button
                android:id="@+id/btn_call"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="拨打电话"
                android:onClick="jumpCall"/>
            <Button
                android:id="@+id/btn_sms"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="发送短信"
                android:onClick="jumpSendMessage"/>
        </LinearLayout>


    </LinearLayout>

</androidx.constraintlayout.widget.ConstraintLayout>
布局

 

完整的mainActivity.java

package com.example.call_msm;

import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;

import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import static android.Manifest.*;

public class MainActivity extends AppCompatActivity
        implements View.OnLongClickListener {

    private Button btn_call;
    private Button btn_sms;
    private EditText editText_number;
    private EditText editText_message;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn_call = findViewById(R.id.btn_call);
        btn_sms = findViewById(R.id.btn_sms);
        btn_call.setOnLongClickListener(this);
        btn_sms.setOnLongClickListener(this);
        editText_number = findViewById(R.id.editText_number);
        editText_message = findViewById(R.id.editText_message);
    }


    @RequiresApi(api = Build.VERSION_CODES.M)
    @Override
    public boolean onLongClick(View v) {
        if (v.equals(btn_call)) {
            makeCall();
        } else if (v.equals(btn_sms)) {
            sendMessage();
        }

        return true;
    }

    @RequiresApi(api = Build.VERSION_CODES.M)
    private void sendMessage() {
        if (checkSelfPermission(permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {
            // TODO: Consider calling
            //    Activity#requestPermissions
            // here to request the missing permissions, and then overriding
            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
            //                                          int[] grantResults)
            // to handle the case where the user grants the permission. See the documentation
            // for Activity#requestPermissions for more details.
            ActivityCompat.requestPermissions(this, new String[]{permission.SEND_SMS}, 1);
            //ActivityCompat.shouldShowRequestPermissionRationale(this, permission.CALL_PHONE);
            return;
        }
        Toast.makeText(this, "长按发短信", Toast.LENGTH_SHORT).show();
        String phoneNumber = editText_number.getText().toString();
        Uri uri = Uri.parse("smsto:" + phoneNumber);
        Intent intent = new Intent(Intent.ACTION_SEND, uri);
        String msg = editText_message.getText().toString();
        intent.putExtra("sms_body", msg);
        startActivity(intent);
    }

    @RequiresApi(api = Build.VERSION_CODES.M)
    private void makeCall() {
        Toast.makeText(this, "长按打电话", Toast.LENGTH_SHORT).show();
        String phoneNumber = editText_number.getText().toString();
        Uri uri = Uri.parse("tel:" + phoneNumber);
        Intent intent = new Intent(Intent.ACTION_CALL, uri);
        if (checkSelfPermission(permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
            // TODO: Consider calling
            //    Activity#requestPermissions
            // here to request the missing permissions, and then overriding
            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
            //                                          int[] grantResults)
            // to handle the case where the user grants the permission. See the documentation
            // for Activity#requestPermissions for more details.
            ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CALL_PHONE},1);
            //ActivityCompat.shouldShowRequestPermissionRationale(this, permission.CALL_PHONE);
            return;
        }
        startActivity(intent);
    }

    public void jumpCall(View view) {
        Toast.makeText(this,"打电话",Toast.LENGTH_SHORT).show();
        String phoneNumber = editText_number.getText().toString();
        Uri uri = Uri.parse("tel:"+phoneNumber);
        Intent intent = new Intent(Intent.ACTION_DIAL, uri);
        startActivity(intent);

    }

    public void jumpSendMessage(View view) {
        Toast.makeText(this,"发短信",Toast.LENGTH_SHORT).show();
        String phoneNumber = editText_number.getText().toString();
        Uri uri = Uri.parse("smsto:" + phoneNumber);
        Intent intent = new Intent(Intent.ACTION_SENDTO,uri);
        String msg = editText_message.getText().toString();
        intent.putExtra("sms_body",msg);
        startActivity(intent);
    }
}
mainActivity.java

 

posted @ 2020-04-13 19:06  超级学渣渣  阅读(344)  评论(0编辑  收藏  举报