Android实现打电话,发短信

一,需求

  1. 点击“打电话”进入拨号界面

  1. 长按“打电话”直接拨打电话

  1. 点击“发短信”进入编辑短信界面

  1. 长按“发短信”直接将短信发送出去

二,代码模块

  1. AndroidManifest

<!--打电话的权限 -->
    <uses-permission android:name="android.permission.CALL_PHONE"/>
    <!--发短信的权限 -->
    <uses-permission android:name="android.permission.SEND_SMS"/>
  1. MainActivity

//初始化需要操作的视图对象
    private EditText edit_main_number;
    private EditText edit_main_sms;
    private Button btn_main_call;
    private Button btn_main_send;


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

        //得到视图对象
        edit_main_number = (EditText) findViewById(R.id.edit_main_number);
        edit_main_sms = (EditText) findViewById(R.id.edit_main_sms);
        btn_main_call = (Button) findViewById(R.id.btn_main_call);
        btn_main_send = (Button) findViewById(R.id.btn_main_send);

        //给视图对象设置点击监听(点击跳转到拨号界面)
        btn_main_call.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //String action = "android.intent.action.DIAL";
                String action = Intent.ACTION_DIAL;//与上面效果相同
                //1.创建一个Intent(隐式)
                Intent intent = new Intent(action);
                //2.携带数据(两种方式)
                //intent.putExtra();
                String number = edit_main_number.getText().toString();
                intent.setData(Uri.parse("tel:" + number));
                //3.startActivity(intent)
                startActivity(intent);
            }
        });

        //给视图对象设置点击监听(点击跳转到编辑短信界面)
        btn_main_send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Intent.ACTION_SENDTO);
                //携带数据
                String number = edit_main_number.getText().toString();//号码
                String sms = edit_main_sms.getText().toString();//内容
                intent.setData(Uri.parse("smsto:" + number));//携带号码
                //携带额外数据
                intent.putExtra("sms_body", sms);

                startActivity(intent);
            }
        });


        //长按打电话
        if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) !=
                PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{
                    Manifest.permission.CALL_PHONE}, 1);
        } else {
            //给视图对象设置长按监听(长按打电话)
            btn_main_call.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View view) {
                    Intent intent = new Intent(Intent.ACTION_CALL);

                    String number = edit_main_number.getText().toString();
                    intent.setData(Uri.parse("tel:" + number));

                    startActivity(intent);
                    return true;
                }
            });
        }

        //长按发短信
        if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{
                    Manifest.permission.SEND_SMS}, 1);
        } else {
            //给视图对象设置长按监听(长按发短信)
            btn_main_send.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View view) {
                    //1.得到SmsManager的对象
                    SmsManager smsManager = SmsManager.getDefault();
                    //2.发送文本信息短信
                    String number = edit_main_number.getText().toString();//号码
                    String sms = edit_main_sms.getText().toString();//内容
                    smsManager.sendTextMessage(number, null, sms, null, null);
                    Toast.makeText(MainActivity.this, "发送成功", Toast.LENGTH_SHORT).show();
                    return true;
                }
            });
        }
  1. activity_main.xml

 <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/edit_main_number"
            android:layout_width="fill_parent"
            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/edit_main_sms"
            android:layout_width="fill_parent"
            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_main_call"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="打电话" />

        <Button
            android:id="@+id/btn_main_send"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="发短信" />
    </LinearLayout>

三,演示效果

点击“打电话”:

其他效果自行测试!

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力学习的小西瓜

谢谢您,小西瓜会继续努力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值