zoukankan      html  css  js  c++  java
  • Android中使用Intent的Action和Data属性实现点击按钮跳转到拨打电话和发送短信

    场景

    点击拨打电话按钮,跳转到拨打电话页面

    点击发送短信按钮,跳转到发送短信页面

    注:

    博客:
    https://blog.csdn.net/badao_liumang_qizhi
    关注公众号
    霸道的程序猿
    获取编程相关电子书、教程推送与免费下载。

    实现

    将布局改为LinearLayout,并通过android:orientation="vertical">设置为垂直布局,然后添加id属性。

    然后添加两个按钮,并设置Id属性与显示文本。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".IntentActivity">
    
        <Button
            android:id="@+id/call"
            android:text="拨打电话"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    
        <Button
            android:id="@+id/send"
            android:text="发送短信"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    
    </LinearLayout>

    然后来到Activity,首先通过ID获取者两个Button

            Button buttonCall = (Button) findViewById(R.id.call);
            Button buttonSend = (Button) findViewById(R.id.send);

    又因为这两个Button的点击事件监听器差不多,所有抽离出一个公共的点击事件监听器对象。

    View.OnClickListener listener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                //将view强转为Button
                Button button = (Button) v;
                //根据button的id
                switch(button.getId()){
                    //如果是拨打电话按钮
                    case R.id.call:
                        //设置Action行为属性
                        intent.setAction(intent.ACTION_DIAL);
                        //设置数据 后面123456789是默认要拨打的电话
                        intent.setData(Uri.parse("tel:123456789"));
                        startActivity(intent);
                        break;
                    case R.id.send:
                        //设置行为为 发送短信
                        intent.setAction(intent.ACTION_SENDTO);
                        //设置发送至 10086
                        intent.setData(Uri.parse("smsto:10086"));
                        //设置短信的默认发送内容
                        intent.putExtra("sms_body","公众号:霸道的程序猿");
                        startActivity(intent);
                        break;
                }
            }
        };

    然后在OnCreate中对按钮设置点击事件监听器。

    完整示例代码

    package com.badao.relativelayouttest;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    
    public class IntentActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_intent);
            Button buttonCall = (Button) findViewById(R.id.call);
            Button buttonSend = (Button) findViewById(R.id.send);
            buttonCall.setOnClickListener(listener);
            buttonSend.setOnClickListener(listener);
        }
    
        View.OnClickListener listener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                //将view强转为Button
                Button button = (Button) v;
                //根据button的id
                switch(button.getId()){
                    //如果是拨打电话按钮
                    case R.id.call:
                        //设置Action行为属性
                        intent.setAction(intent.ACTION_DIAL);
                        //设置数据 后面123456789是默认要拨打的电话
                        intent.setData(Uri.parse("tel:123456789"));
                        startActivity(intent);
                        break;
                    case R.id.send:
                        //设置行为为 发送短信
                        intent.setAction(intent.ACTION_SENDTO);
                        //设置发送至 10086
                        intent.setData(Uri.parse("smsto:10086"));
                        //设置短信的默认发送内容
                        intent.putExtra("sms_body","公众号:霸道的程序猿");
                        startActivity(intent);
                        break;
                }
            }
        };
    }

    因为用到了打电话和发动短信,所以需要声明这两个权限,打开AndroidMainfest.xml

        <!--添加打电话权限-->
        <uses-permission android:name="android.permission.CALL_PHONE"/>
        <!--添加发送短信权限-->
        <uses-permission android:name="android.permission.SEND_SMS"/>

    添加位置如下

  • 相关阅读:
    1082 射击比赛 (20 分)
    1091 N-自守数 (15 分)
    1064 朋友数 (20 分)
    1031 查验身份证 (15 分)
    1028 人口普查 (20 分)
    1059 C语言竞赛 (20 分)
    1083 是否存在相等的差 (20 分)
    1077 互评成绩计算 (20 分)
    792. 高精度减法
    791. 高精度加法
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/12168987.html
Copyright © 2011-2022 走看看