Android中使用Intent的Action和Data属性实现点击按钮跳转到拨打电话和发送短信
程序员文章站
2022-06-19 10:43:49
场景 点击拨打电话按钮,跳转到拨打电话页面 点击发送短信按钮,跳转到发送短信页面 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 将布局改为LinearLayout,并通过an ......
场景
点击拨打电话按钮,跳转到拨打电话页面
点击发送短信按钮,跳转到发送短信页面
注:
博客:
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
将布局改为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"/>
添加位置如下