Android实现发短信,打电话
最近做的这个HTML5项目中有2个调用本地的打电话,发短信功能,之后就去在网上找实现方式下面就是实现方式。
- 首先想到就是权限问题所以在AndroidManifest中添加权限
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.my.test"><!-- 允许程序发送SMS短信 --><uses-permission android:name="android.permission.SEND_SMS"/><!-- 允许程序读取短信息 --><uses-permission android:name="android.permission.READ_SMS"/><!-- 允许程序监控一个将收到短信息,记录或处理 --><uses-permission android:name="android.permission.RECEIVE_SMS"/><!-- 打电话 --><uses-permission android:name="android.permission.CALL_PHONE"/><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
- 布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.my.test.MainActivity"><Buttonandroid:id="@+id/btn_call1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="打电话(调到拨号页面)"android:textAllCaps="false" /><Buttonandroid:id="@+id/btn_call2"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="打电话(直接拨号)"android:textAllCaps="false" /><Buttonandroid:id="@+id/btn_send_message1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="发短信(第一种方式)"android:textAllCaps="false" /><Buttonandroid:id="@+id/btn_send_message2"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="发短信(第二种方式)"android:textAllCaps="false" /><Buttonandroid:id="@+id/btn_send_message3"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="发短信(跳到发送短信页面)"android:textAllCaps="false" /></LinearLayout>
- Activity页面代码
package com.my.test;import android.app.Activity; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.telephony.PhoneNumberUtils; import android.telephony.SmsManager; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast;import java.util.List;public class MainActivity extends AppCompatActivity implements View.OnClickListener {private Button btn_call1;private Button btn_call2;private Button btn_send_message1;private Button btn_send_message2;private Button btn_send_message3;private final String TAG = getClass().getSimpleName();private SMSBroadcastReceiver1 smsBr1;private SMSBroadcastReceiver2 smsBr2;private IntentFilter intentFilter1;private IntentFilter intentFilter2;private final static String SENT_SMS_ACTION = "SENT_SMS_ACTION";private final static String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn_call1 = (Button) findViewById(R.id.btn_call1);btn_call2 = (Button) findViewById(R.id.btn_call2);btn_send_message1 = (Button) findViewById(R.id.btn_send_message1);btn_send_message2 = (Button) findViewById(R.id.btn_send_message2);btn_send_message3 = (Button) findViewById(R.id.btn_send_message3);btn_call1.setOnClickListener(this);btn_call2.setOnClickListener(this);btn_send_message1.setOnClickListener(this);btn_send_message2.setOnClickListener(this);btn_send_message3.setOnClickListener(this);//注册广播smsBr1 = new SMSBroadcastReceiver1();intentFilter1 = new IntentFilter(SENT_SMS_ACTION);registerReceiver(smsBr1, intentFilter1);smsBr2 = new SMSBroadcastReceiver2();intentFilter2 = new IntentFilter(DELIVERED_SMS_ACTION);registerReceiver(smsBr2, intentFilter2);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn_call1:callPhone1("10086");break;case R.id.btn_call2:callPhone2("10086");break;case R.id.btn_send_message1:sendMessage1("10086", "119"); //10086查流量短信break;case R.id.btn_send_message2:sendMessage2("10086", "113"); //10086查话费短信break;case R.id.btn_send_message3:sendMessage3("15164054765", "测试");break;}}@Overrideprotected void onDestroy() {super.onDestroy();unregisterReceiver(smsBr1);unregisterReceiver(smsBr2);}/*** 打电话** @param tel 电话号码*/private void callPhone1(String tel) {Intent intent = new Intent(Intent.ACTION_DIAL);intent.setData(Uri.parse("tel:" + tel));startActivity(intent);}/*** 打电话** @param tel 电话号码*/private void callPhone2(String tel) {Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + tel));startActivity(intent);}/*** 发送短信** @param tel 电话号码* @param content 短息内容*/private void sendMessage1(String tel, String content) {Intent sendIntent = new Intent(SENT_SMS_ACTION);PendingIntent sendPI = PendingIntent.getBroadcast(this, 0, sendIntent, 0);SmsManager smsManager = SmsManager.getDefault();List<String> divideContents = smsManager.divideMessage(content);for (String text : divideContents) {smsManager.sendTextMessage(tel, null, text, sendPI, null);}}/*** 发送短信** @param tel 电话号码* @param content 短息内容*/private void sendMessage2(String tel, String content) {Intent deliverIntent = new Intent(DELIVERED_SMS_ACTION);PendingIntent deliverPI = PendingIntent.getBroadcast(this, 0, deliverIntent, 0);SmsManager smsManager = SmsManager.getDefault();List<String> divideContents = smsManager.divideMessage(content);for (String text : divideContents) {smsManager.sendTextMessage(tel, null, text, null, deliverPI);}}/*** 发送短信(掉起发短信页面)** @param tel 电话号码* @param content 短息内容*/private void sendMessage3(String tel, String content) {if (PhoneNumberUtils.isGlobalPhoneNumber(tel)) {Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:" + tel));intent.putExtra("sms_body", content);startActivity(intent);}}private class SMSBroadcastReceiver1 extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {switch (getResultCode()) {case Activity.RESULT_OK:Toast.makeText(context, "短信发送成功", Toast.LENGTH_SHORT).show();break;case SmsManager.RESULT_ERROR_GENERIC_FAILURE:Log.e(TAG, "SmsManager.RESULT_ERROR_GENERIC_FAILURE");break;case SmsManager.RESULT_ERROR_RADIO_OFF:Log.e(TAG, "SmsManager.RESULT_ERROR_RADIO_OFF");break;case SmsManager.RESULT_ERROR_NULL_PDU:Log.e(TAG, "SmsManager.RESULT_ERROR_NULL_PDU");break;}}}private class SMSBroadcastReceiver2 extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context, "短信发送成功", Toast.LENGTH_SHORT).show();}} }
Android实现发短信,打电话相关推荐
- Android模拟发短信,[转载]Android模拟器中模拟GPS、打电话、发短信
首先,当然要打开模拟器 然后,连接模拟器 C:UsersBillGates>telnet localhost 5554 Android Console: type 'help' for a li ...
- android应用发短信
首选在AndroidManifest.xml 申请权限 <uses-permission android:name="android.permission.SEND_SMS" ...
- pc(电脑)用java通过adb操作android手机发短信及中文乱码解决
最近想用java调用android手机的短信功能.已开始用一下方法实现: adb -s emulator-5554 shell am start -a android.intent.action.SE ...
- android双卡发短信SubId和SubscriptionId转换
android9.0发短信时传入的subId实际上是SubscriptionId. 使用双卡时如果传入的是SubId(或者PhoneId.SlotId,卡1为0,卡2为1)时就需要将subId转为Su ...
- 给模拟器发短信/打电话
文章目录 1. 通过 telnet 与模拟器通信 1.1 无法使用telnet 2.发送短信 2.1 提示:KO: unknown command, try 'help' 2.1.1 auth tok ...
- android 语音发短信,谷歌Android增加语音操作功能 可语音发短信
8月13日消息,谷歌发布Android操作系统的语音指令功能"Voice Actions for Android"并且在博客中发布了一个解释这些功能的视频.Android平台的语音 ...
- 向模拟器发短信打电话的方法
转载自:http://www.cnblogs.com/feisky/archive/2010/06/10/1755914.html请尊重原创作者 1.启动android emulator,查看标题栏找 ...
- android 脚本发短信,Android使用SmsManager实现短信发送功能
安卓使用SmsManager实现发送短信,供大家参考,具体内容如下 关键代码实现 package com.example.sms; import java.util.ArrayList; import ...
- android双卡发短信,基于5.1.1实现
[原创]作品,转载请注明出处,请尊重作者的辛苦. 最近开发中遇到了双卡的问题,关于双卡查看了好多文章,但是没有一个能解决问题的,要么就是定制的或者有厂商提供支持的,我这里是基于android 5.1. ...
最新文章
- 配置字段(居左,居中,居右,高度自适应)
- Python基础语法精心总结!看完都知道的可以往下继续学习了
- mysql 快速入门_MySql快速入门
- C++版 - 剑指offer面试题38:数字在已排序数组中出现的次数
- SAP Spartacus user和org user form两处不同的checkbox风格
- codeforces1208 F. Bits And Pieces(SOS DP)
- 知道接口地址 如何传数据_数据不知道如何可视化?一款工具推荐给大家
- 别人在忙挖矿,京东架构师却悄悄用区块链搞了件大事
- tensorflow版本及其对应环境
- 浙大与北大计算机考研分数线,34所985大学考研分数线全部出炉,清华大学北大浙大等都接收调剂...
- 16、单片机串口原理与应用
- java最好用的浏览器_国内好的pc浏览器评测
- kafka中的核心概念
- 【记录】螺纹连接与螺旋传动
- java--类单继承多实现,接口多继承
- i3 10100f和i5 9600kf 哪个好
- 滴滴快车VS易到“易来”到底谁便宜?结果惊呆了
- 90后在校大学生开旅游公司创业
- windows server 2016 搭建AD域服务
- 数据湖加速器GooseFS,加速湖上数据分析性能
热门文章
- mysql 手工sql注入_【sql注入专题02】Mysql手工注入流程
- 关于form表单提交时的坑,submit,submit,submit
- python多路分支_用于多个参数的python multiprocessing pool.map
- 赛码网_在线编程_约会
- 2022 极术通讯-从NVIDIA自动驾驶芯片Thor,看大芯片的发展趋势
- Android 实现书籍翻页效果----原理篇
- uC/OS-II+ucGUI 3.24 保护模式下的移植
- harmonyos下载安装,harmonyos系统下载_harmonyos系统安装 v2.0_零度软件园
- ubuntu16.04更新pip出现Command “python setup.py egg_info“ failed with error code 1 in /tmp/pip-build-Yjy7
- HP unix 介绍