最近做的这个HTML5项目中有2个调用本地的打电话,发短信功能,之后就去在网上找实现方式下面就是实现方式。

  1. 首先想到就是权限问题所以在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>
  2. 布局文件
    <?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>
    
  3. 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实现发短信,打电话相关推荐

  1. Android模拟发短信,[转载]Android模拟器中模拟GPS、打电话、发短信

    首先,当然要打开模拟器 然后,连接模拟器 C:UsersBillGates>telnet localhost 5554 Android Console: type 'help' for a li ...

  2. android应用发短信

    首选在AndroidManifest.xml 申请权限 <uses-permission android:name="android.permission.SEND_SMS" ...

  3. pc(电脑)用java通过adb操作android手机发短信及中文乱码解决

    最近想用java调用android手机的短信功能.已开始用一下方法实现: adb -s emulator-5554 shell am start -a android.intent.action.SE ...

  4. android双卡发短信SubId和SubscriptionId转换

    android9.0发短信时传入的subId实际上是SubscriptionId. 使用双卡时如果传入的是SubId(或者PhoneId.SlotId,卡1为0,卡2为1)时就需要将subId转为Su ...

  5. 给模拟器发短信/打电话

    文章目录 1. 通过 telnet 与模拟器通信 1.1 无法使用telnet 2.发送短信 2.1 提示:KO: unknown command, try 'help' 2.1.1 auth tok ...

  6. android 语音发短信,谷歌Android增加语音操作功能 可语音发短信

    8月13日消息,谷歌发布Android操作系统的语音指令功能"Voice Actions for Android"并且在博客中发布了一个解释这些功能的视频.Android平台的语音 ...

  7. 向模拟器发短信打电话的方法

    转载自:http://www.cnblogs.com/feisky/archive/2010/06/10/1755914.html请尊重原创作者 1.启动android emulator,查看标题栏找 ...

  8. android 脚本发短信,Android使用SmsManager实现短信发送功能

    安卓使用SmsManager实现发送短信,供大家参考,具体内容如下 关键代码实现 package com.example.sms; import java.util.ArrayList; import ...

  9. android双卡发短信,基于5.1.1实现

    [原创]作品,转载请注明出处,请尊重作者的辛苦. 最近开发中遇到了双卡的问题,关于双卡查看了好多文章,但是没有一个能解决问题的,要么就是定制的或者有厂商提供支持的,我这里是基于android 5.1. ...

最新文章

  1. 配置字段(居左,居中,居右,高度自适应)
  2. Python基础语法精心总结!看完都知道的可以往下继续学习了
  3. mysql 快速入门_MySql快速入门
  4. C++版 - 剑指offer面试题38:数字在已排序数组中出现的次数
  5. SAP Spartacus user和org user form两处不同的checkbox风格
  6. codeforces1208 F. Bits And Pieces(SOS DP)
  7. 知道接口地址 如何传数据_数据不知道如何可视化?一款工具推荐给大家
  8. 别人在忙挖矿,京东架构师却悄悄用区块链搞了件大事
  9. tensorflow版本及其对应环境
  10. 浙大与北大计算机考研分数线,34所985大学考研分数线全部出炉,清华大学北大浙大等都接收调剂...
  11. 16、单片机串口原理与应用
  12. java最好用的浏览器_国内好的pc浏览器评测
  13. kafka中的核心概念
  14. 【记录】螺纹连接与螺旋传动
  15. java--类单继承多实现,接口多继承
  16. i3 10100f和i5 9600kf 哪个好
  17. 滴滴快车VS易到“易来”到底谁便宜?结果惊呆了
  18. 90后在校大学生开旅游公司创业
  19. windows server 2016 搭建AD域服务
  20. 数据湖加速器GooseFS,加速湖上数据分析性能

热门文章

  1. mysql 手工sql注入_【sql注入专题02】Mysql手工注入流程
  2. 关于form表单提交时的坑,submit,submit,submit
  3. python多路分支_用于多个参数的python multiprocessing pool.map
  4. 赛码网_在线编程_约会
  5. 2022 极术通讯-从NVIDIA自动驾驶芯片Thor,看大芯片的发展趋势
  6. Android 实现书籍翻页效果----原理篇
  7. uC/OS-II+ucGUI 3.24 保护模式下的移植
  8. harmonyos下载安装,harmonyos系统下载_harmonyos系统安装 v2.0_零度软件园
  9. ubuntu16.04更新pip出现Command “python setup.py egg_info“ failed with error code 1 in /tmp/pip-build-Yjy7
  10. HP unix 介绍