Android 自动、拨打电话、拨号
public class MainActivity extends AppCompatActivity {private EditText etPhone;private TextView tvTime;private final static String simSlotName[] = {"extra_asus_dial_use_dualsim","com.android.phone.extra.slot",//基本上是这个"slot","simslot","sim_slot","subscription",//华为是这个"Subscription","phone","com.android.phone.DialingMode","simSlot","slot_id",//小米是这个"simId","simnum","phone_type","slotId","slotIdx"};private Handler mHandler = new Handler();private Runnable runnable;private int time = 5;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);etPhone = findViewById(R.id.et_phone);tvTime = findViewById(R.id.tv_time);TextView tvCall1 = findViewById(R.id.tv_call1);TextView tvCall2 = findViewById(R.id.tv_call2);TextView tvHangUp = findViewById(R.id.tv_hang_up);if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {//未授权ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE}, 1);} else {//已授权}TelephonyManager tpm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);tpm.listen(new MyPhontStateListener(), PhoneStateListener.LISTEN_CALL_STATE);runnable = new Runnable() {@Overridepublic void run() {time--;if (time == 0) {time = 5;String phone = etPhone.getText().toString();try {/*** Intent.ACTION_CALL 直接拨打电话* Intent.ACTION_DIAL 跳转到拨号盘*/Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phone));intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);for (int i = 0; i < simSlotName.length; i++) {intent.putExtra(simSlotName[i], 0);}startActivity(intent);Log.e("错误信息:", "跳转");} catch (Exception e) {Log.e("错误信息:", e.getMessage());}} else {tvTime.setText(time + "");mHandler.postDelayed(this, 1000);}}};tvCall1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {time = 5;tvTime.setText("5");mHandler.postDelayed(runnable, 500);}});tvCall2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String phone = etPhone.getText().toString();try {/*** Intent.ACTION_CALL 直接拨打电话* Intent.ACTION_DIAL 跳转到拨号盘*/Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phone));intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);for (int i = 0; i < simSlotName.length; i++) {intent.putExtra(simSlotName[i], 1);}startActivity(intent);} catch (Exception e) {Log.e("错误信息:", e.getMessage());}}});tvHangUp.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {}});}@Overrideprotected void onRestart() {super.onRestart();time = 5;tvTime.setText("5");mHandler.postDelayed(runnable, 500);}@Overrideprotected void onDestroy() {mHandler.removeCallbacks(runnable);mHandler = null;super.onDestroy();}class MyPhontStateListener extends PhoneStateListener {@Overridepublic void onCallStateChanged(int state, String phoneNumber) {Log.e("电话状态:", "------------");switch (state) {case TelephonyManager.CALL_STATE_IDLE://空闲Log.e("电话状态:", "空闲");break;case TelephonyManager.CALL_STATE_RINGING://来电Log.e("电话状态:", "来电");break;case TelephonyManager.CALL_STATE_OFFHOOK://正在通话中Log.e("电话状态:", "正在通话中");break;}}}
}
Android 自动、拨打电话、拨号相关推荐
- android 自动拨打电话和挂断电话(反射和intent方式)
欢迎来到博主的技术分享博客 今天分享的技术主要内容是自动拨打电话和挂断电话.自动拨打电话分为两种,一种是通过反射ITelephony这个类直接调用call方法,一种是通过intent方法.而挂断电话则 ...
- Android入门篇(四):自动拨打电话、手动拨打电话
Android入门篇(四):自动拨打电话.手动拨打电话 一.前言 最近在做的项目需要用到自动拨号的这一功能,17年写了一个,最近拿出来用发现不能使用了,后面查资料据说是因为Android 6(api2 ...
- Android手机拨打电话、手动发送短信与自动拨打电话、自动发送短信(代码很简单哦)
Android实现手动拨打电话,即点击后跳转到手机默认电话号码输入页面,可以将相应号码传送过去: <span style="font-size:18px;"> Inte ...
- Android实现拨打电话和发送短信,Android手机拨打电话、手动发送短信与自动拨打电话、自动发送短信(代码很简单哦)...
Android实现手动拨打电话,即点击后跳转到手机默认电话号码输入页面,可以将相应号码传送过去: Intent intent = new Intent(Intent.ACTION_DIAL, Uri. ...
- android stuido拨打电话,Android Studio3.5开发电话拨号器
Android开发之电话拨号器实例详解.本人用的是Android Studio 3.5版本 首先要理清思路.思路大概是: 1.画UI user interface 画界面 layout-> ...
- Android学习3—电话拨号器
本测试主要实现了一个Android的拨打电话的功能 一:界面预览 由图中可以看出,这个Activity需要3个控件:TextView.EditText.Button 其实实现一个功能要经过几个步骤: ...
- Android 10 拨打电话流程
接续上一章节,理解Android 10 拨打电话流程 packages/apps/Dialer/java/com/android/dialer/dialpadview/DialpadFragment. ...
- python实现自动拨打电话_python 实现手机自动拨打电话的方法(通话压力测试)
现在能用自动化实现的,尽量使用自动化程序去操作,代替人工去操作,更有效率. 今天说下用python结合adb命令去实现安卓手机端的通话压力测试. #操作前先在设置里打开power键可以结束通话按钮,否 ...
- python实现自动打电话-python 实现手机自动拨打电话的方法(通话压力测试)
现在能用自动化实现的,尽量使用自动化程序去操作,代替人工去操作,更有效率. 今天说下用python结合adb命令去实现安卓手机端的通话压力测试. #操作前先在设置里打开power键可以结束通话按钮,否 ...
- python 实现打电话_python 实现手机自动拨打电话的方法(通话压力测试)
现在能用自动化实现的,尽量使用自动化程序去操作,代替人工去操作,更有效率. 今天说下用python结合adb命令去实现安卓手机端的通话压力测试. #操作前先在设置里打开power键可以结束通话按钮,否 ...
最新文章
- Vim 命令、操作、快捷键全集
- 【oracle】sqlnet.ora 访问控制策略
- 022_Table表格
- 洗牌算法shuffle
- PHP 笔记——操作MySQL数据库
- elk6.2集群搭建,cerebro集群管理
- hp服务器330g6怎么安装系统,Hp DL380 g6 安装WIN2003的图文方法
- db2界面调用存储过程_第三章 操作系统用户界面
- java数组与C++数组的不同之处
- bigdecimal 平均数_MapReduce实例-必须用Combine--求平均数
- Linux下动态库使用小结
- C++ 内存基本构件new [] /delete []的意义、内存泄漏原因、VC下cookie的基本布局
- java嵌套循环语句_Java学习笔记(七) 循环语句
- 计算机应用怎么写,计算机应用专业描述怎么写
- NETBEAN 启动报错 CANNOT LOCATE JAVA INSTALLATION IN SPECIFIED JDKHOME的解决办法
- 勘测定界坐标交换格式文本文件转换成 shapefile 格式
- SpringBoot 项目(若依脚手架)2
- 【数据仓库】数据仓库的介绍
- QT 带 进度条 解压缩文件方法 - QuaZip
- Python获取前一天的日期,前一个月的第一天,前一个月的最后一天
热门文章
- Matlab学习-图像处理工具箱函数
- delete请求数据详解
- cisco b 系列 c 系列 服务器,UCS B系列/C系列/S系列/HyperFlex系列组合,与Cisco VIC卡绑定选项...
- God of War:Chains of Olympus download! 下载战神奥林匹斯之链!(ISO torrent)
- 腾讯云中间件读者敬启:2022年热门技术文章集锦,建议收藏
- 草根站长故事之:我的业余站长之路(下)
- Xwings操作Excel常用帮助功能
- 云原生大爆发,Day2运营与K8s集群生命周期的交织
- 周六带小哞去麦当劳,遇到麦当劳叔叔。
- osgi框架 android,基于Android的OSGi框架智能家居系统的设计与实现