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"/>

添加位置如下
Android中使用Intent的Action和Data属性实现点击按钮跳转到拨打电话和发送短信的更多相关文章
- Android 打开URL中的网页和拨打电话、发送短信功能
拨打电话需要的权限 <uses-permission android:name="android.permission.CALL_PHONE"/> 为了省事界面都写一起 ...
- java攻城师之路(Android篇)--搭建开发环境、拨打电话、发送短信、布局例子
一.搭建开发环境 1.所需资源 JDK6以上 Eclipse3.6以上 SDK17, 2.3.3 ADT17 2.安装注意事项 不要使用中文路径 如果模拟器默认路径包含中文, 可以设置android_ ...
- 脚本控制向Android模拟拨打电话,发送短信,定位设置功能
做行为触发的时候要向模拟器实现拨打电话,发送短信,定位设置的的功能,可以很方便通过telnet localhost 5554实现. 写个脚本很快的搞定了.网上资料很多,脚本的很少,也所积点德啦. 写 ...
- Android开发手记(15) 拨打电话和收发短信
1.Intent简介 Android组价之间的通信,由Intent来协助完成.Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到 ...
- html5页面中 触发 拨打电话、发短信 的方式
<a href="tel:18688888888">拨号</a> <a href="sms:18688888888">发短信 ...
- Intent的属性及Intent-filter配置——实例Action、Data属性启动系统Activity
一旦为Intent同时指定了Action.Data属性,那么Android将可根据指定的数据类型来启动特定的应用程序,并对指定数据类型执行相应的操作. 下面是几个Action属性.Data属性的组合. ...
- Android中的intent属性
android之Intent的七大属性 2015年04月03日 ⁄ Android ⁄ 共 14866字 ⁄ 字号 小 中 大 ⁄ 1条评论 Intent用于封装程序的“调用意图”.两个Activit ...
- android使用Intent操作拨打号码发送短信
Activity程序Activity.java package com.example.intentcaseproject; import android.net.Uri; import androi ...
- android 中调用接口发送短信
android中可以通过两种方式发送短信 第一:调用系统短信接口直接发送短信:主要代码如下: //直接调用短信接口发短信 SmsManager smsManager = SmsManager.getD ...
随机推荐
- A complex 16-Level XSS Challenge
A complex 16-Level XSS Challenge, held in summer 2014 (+1 Hidden Level) Index Level 0 Level 1 Level ...
- Liunx创建到部署ASP.NET Core项目从零开始-----使用Centos7
一.搭建环境 1..注册Microsoft密钥和源 执行命令:sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages ...
- ApplicationContextAware获取bean
ApplicationContextAware获取bean 概述 在某些特殊的情况下,Bean需要实现某个功能,但该功能必须借助于Spring容器才能实现,此时就必须让该Bean先获取Spring容器 ...
- windows丢失文件的恢复技巧
这几天在使用STVD调试程序的时候,突然跳出来一个“共享冲突”错误,当时并没有在意,点确定后赶紧CTRL+S,然后就一直死在那里了... 结束任务,重启STVD,提示找不到main.c,到此也不以为然 ...
- 脚本在Shell可以执行成功,放到crontab里执行失败
一.背景 自己写了个监控MGR状态的脚本,直接在Linux的Shell环境下可以执行成功,但是只要放到crontab里执行,就失败,脚本内容如下 #!/bin/bash MAIL_ADDR=`cat ...
- Docker Mysql部署与使用
参考链接:Docker 安装 Mysql 详解
- The .native modifier for v-on is only valid on components but it was used on <input>
原因 基础不牢固就是这样了,事件的native修饰符只能在组件上使用,原生的html标签是不能使用的,这是因为我在input标签使用了native修饰符.
- angular之模块开发一
模块化开发 概述 什么是模块化开发 将软件产品看作为一系列功能模块的组合 通过特定的方式实现软件所需模块的划分.管理.加载 为什么使用模块化开发 https://github.com/seajs/se ...
- 导弹拦截(dp复习)
题目描述:求最长下降子序列的长度 in: 71 7 3 5 9 4 8 out: 4 解释:1 3 4 8/1 3 5 8 长度为四 这让我想到了hdu上导弹拦截那道题,是求最长上升子序列长度 其转移 ...
- CCF_201312-4_有趣的数
dp题,dp[i][j]代表i位数,j状态的数量.其中,j 的状态表示值有6种. 0 1 2 √ j = 0 3 01 02 √ j = 1 03 12 13 23 √ j = 2 0 ...