- 浏览: 3010997 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (893)
- android (110)
- iphone (198)
- java (79)
- JavaScript手册-目录 (9)
- JavaScript手册-Array (19)
- JavaScript手册-Boolean (5)
- JavaScript手册-Date (50)
- JavaScript手册-Math (30)
- JavaScript手册-Number (14)
- JavaScript手册-RegExp (7)
- JavaScript手册-String (38)
- JavaScript手册-全局函数 (8)
- JavaScript实用脚本 (7)
- Others (21)
- java-jpcap (7)
- java-thread (1)
- ibm文章 (3)
- classloader (2)
- java-filter (2)
- 运行环境 (33)
- java-正则 (2)
- oracle (1)
- linux-shell (26)
- wap (1)
- sqlite (3)
- wow (1)
- jvm (1)
- git (5)
- unity3d (29)
- iap (2)
- mysql (23)
- nginx (14)
- tomcat (9)
- apache (2)
- php (1)
- ubuntu (40)
- rsa (1)
- golang (21)
- appstore (5)
- sftp (2)
- log4j (2)
- netty (18)
- 测试工具 (6)
- memcache (5)
- 设计模式 (1)
- centos (8)
- google_iab (5)
- iOS专题 (4)
- mac (10)
- 安装配置帮助手册 (2)
- im4java_graphicsmagick (5)
- inotify-tools (1)
- erlang (6)
- 微信支付 (1)
- redis (8)
- RabbitMQ (5)
最新评论
-
heng123:
Netty视频教程https://www.douban.com ...
netty4.0.23 初学的demo -
maotou1988:
使用Netty进行Android与Server端通信实现文字发 ...
netty4.0.23 初学的demo -
码革裹尸:
非常感谢,正好用上
android 呼入电话的监听(来电监听) -
rigou:
提示的/222.177.4.242 无法链接到ip地址,是什 ...
通过 itms:services://? 在线安装ipa ,跨过app-store -
duwanbo:
GridView与数据绑定
android 来电自动接听和自动挂断
注意:android2.3版本不支持下面的自动接听方法。(会抛异常:java.lang.SecurityException: Neither user xxxxx nor current process has android.permission.MODIFY_PHONE_STATE.)
第一步:准备应用环境需要的系统包和aidl文件。
(1)在应用中创建包:android.telephony
将android系统框架下的\framework\telephony\java\android\telephony目录中的NeighboringCellInfo.aidl文件复制到上面创建的包(android.telephony )中;
(2)在应用中创建包:com.android.internal.telephony
将android系统框架下的\framework\telephony\java\com\android\internal\telephony目录中的ITelephony.aidl文件复制到上面创建的包(com.android.internal.telephony )中;
第二步:创建一个获取ITelephony的方法
PhoneUtils.java
package com.zhouzijing.android.demo; import java.lang.reflect.Method; import com.android.internal.telephony.ITelephony; import android.telephony.TelephonyManager; public class PhoneUtils { /** * 根据传入的TelephonyManager来取得系统的ITelephony实例. * @param telephony * @return 系统的ITelephony实例 * @throws Exception */ public static ITelephony getITelephony(TelephonyManager telephony) throws Exception { Method getITelephonyMethod = telephony.getClass().getDeclaredMethod("getITelephony"); getITelephonyMethod.setAccessible(true);//私有化函数也能使用 return (ITelephony)getITelephonyMethod.invoke(telephony); } }
第三步:创建电话广播拦截器
MyPhoneBroadcastReceiver.java
package com.zhouzijing.android.demo; import com.android.internal.telephony.ITelephony; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.telephony.TelephonyManager; import android.util.Log; public class MyPhoneBroadcastReceiver extends BroadcastReceiver { private final static String TAG = MyPhone.TAG; @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Log.i(TAG, "[Broadcast]"+action); //呼入电话 if(action.equals(MyPhone.B_PHONE_STATE)){ Log.i(TAG, "[Broadcast]PHONE_STATE"); doReceivePhone(context,intent); } } /** * 处理电话广播. * @param context * @param intent */ public void doReceivePhone(Context context, Intent intent) { String phoneNumber = intent.getStringExtra( TelephonyManager.EXTRA_INCOMING_NUMBER); TelephonyManager telephony = (TelephonyManager)context.getSystemService( Context.TELEPHONY_SERVICE); int state = telephony.getCallState(); switch(state){ case TelephonyManager.CALL_STATE_RINGING: Log.i(TAG, "[Broadcast]等待接电话="+phoneNumber); try { ITelephony iTelephony = PhoneUtils.getITelephony(telephony); iTelephony.answerRingingCall();//自动接通电话 //iTelephony.endCall();//自动挂断电话 } catch (Exception e) { Log.e(TAG, "[Broadcast]Exception="+e.getMessage(), e); } break; case TelephonyManager.CALL_STATE_IDLE: Log.i(TAG, "[Broadcast]电话挂断="+phoneNumber); break; case TelephonyManager.CALL_STATE_OFFHOOK: Log.i(TAG, "[Broadcast]通话中="+phoneNumber); break; } } }
第四部:注册电话广播拦截器
MyPhone.java
package com.zhouzijing.android.demo; import android.app.Activity; import android.content.IntentFilter; import android.os.Bundle; import android.telephony.TelephonyManager; import android.util.Log; import android.view.View; public class MyPhone extends Activity { public final static String TAG = "MyPhone"; public final static String B_PHONE_STATE = TelephonyManager.ACTION_PHONE_STATE_CHANGED; private MyPhoneBroadcastReceiver mBroadcastReceiver; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_phone); } //按钮1-注册广播 public void registerThis(View v) { Log.i(TAG, "registerThis"); mBroadcastReceiver = new MyPhoneBroadcastReceiver(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(B_PHONE_STATE); intentFilter.setPriority(Integer.MAX_VALUE); registerReceiver(mBroadcastReceiver, intentFilter); } //按钮2-撤销广播 public void unregisterThis(View v) { Log.i(TAG, "unregisterThis"); unregisterReceiver(mBroadcastReceiver); } }
第5步:在AndroidManifest.xml配置权限
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> <uses-permission android:name="android.permission.CALL_PHONE"/>
其中:
iTelephony.answerRingingCall();//自动接通电话
必须有权限 android.permission.MODIFY_PHONE_STATE
iTelephony.endCall();//自动挂断电话
必须有权限 android.permission.CALL_PHONE
评论
另你这个代码在什么型号的手机上测试通过的?
发表评论
-
Android Fragment 真正的完全解析(下)
2015-03-25 14:30 1132Android Fragment 真正 ... -
Android Fragment 真正的完全解析(上)
2015-03-25 10:14 919Android Fragment 真正的 ... -
Activity的生命周期方法
2015-03-25 09:54 594一:Activity的生命周期方法 Android ... -
Android在layout xml中使用include
2015-03-25 07:28 1011在Android的layout样式定义中,可以使 ... -
一个支持圆角的快速ImageView:RoundedImageView
2015-03-07 09:50 11106一个支持圆角的快速ImageView:Rounded ... -
ImageView图片设置
2015-03-05 23:08 968显示任意图像,例如图标。ImageView类可以加载 ... -
ListActivity的onListItemClick不响应的解决办法
2015-03-04 17:57 1119ListActivity的onListItemClic ... -
ListView中有控件隐藏或显示造成的显示错误问题
2015-03-03 23:03 1865ListView中有控件隐藏或显示造成的显示错误问题 ... -
Android中Application类用法
2015-03-03 09:12 1009Android中Application类用法 ... -
Android使用Application总结
2015-03-03 09:11 1206Android使用Application ... -
在android中运行java main方法
2015-02-27 10:38 1012在android中运行java main方法 ... -
android BitmapFactory.Options
2015-02-19 21:01 1045public Bitmap inBi ... -
android 基础demo例子
2015-02-16 21:06 846demoDatas.add(new DemoBe ... -
Android大图片裁剪终极解决方案
2015-02-15 17:08 2180Android大图片裁剪终 ... -
Android_照相机Camera_调用系统照相机返回data为空
2015-02-15 14:17 1302Android_照相机Camera_调用系统照相机返回 ... -
Android: 打印Bundle内容
2015-02-15 14:11 2997Android: 打印Bundle内容 有的时 ... -
android线程、UI、AsyncTask
2015-02-13 18:06 1293本文是转摘的,看过了觉得很好!所以转了过来!如果你想要 ... -
Fragment中ListView的使用
2015-02-06 23:01 2139Fragment中ListView的使用 直接 ... -
在安卓开发时用酷派手机无法打印出应用内的日志的解决方法
2014-12-11 20:39 1213在安卓开发时用酷派手机无法打印出应用内的日志的解决方法 ... -
查看安卓APK文件证书的方法
2014-12-04 10:05 1036************************** ...
相关推荐
在Android应用开发中,实现自动接听和挂断电话的功能是一个高级话题,涉及到系统级权限、来电监听和服务等关键概念。这个源码项目提供了一个实际的示例,可以帮助开发者理解和掌握这些技术。 首先,我们要理解...
在Android平台上,实现自动接听和挂断电话的功能主要涉及到电话管理和服务组件的使用。这个功能在某些场景下非常有用,比如在驾驶时自动接听电话,或者在自动化测试中模拟用户行为。下面我们将深入探讨如何在Android...
综上所述,实现自动接听和挂断电话功能在Android开发中是一项涉及多个层面的任务,需要对Android系统的电话服务有深入的理解,并且正确处理权限和系统交互。同时,考虑到用户体验和安全性,开发者应谨慎并合法地运用...
在安卓(Android)平台上,开发一个能够自动接听和挂断电话的应用程序涉及到多个核心知识点,这些功能通常是通过监听系统的电话状态来实现的。本项目提供的源码深入展示了如何利用Android的电话管理和广播接收器机制...
在Android平台上,开发一个自动接听电话的程序涉及到多个核心知识点,包括权限管理、来电监听、系统服务、广播接收器以及电话API的使用。下面将详细阐述这些关键点。 首先,**权限管理**是Android应用程序的基础,...
Android系统中,自动接听或者挂断来电是非常有用的功能,特别是在自动化操作和效率提升方面。下面我们将详细介绍如何使用Android实现自动接听或者挂断来电的功能。 首先,我们需要在AndroidManifest文件中添加相应...
在Android平台上,实现自动接听和挂断电话的功能是一项常见的需求,尤其在开发电话相关的应用程序时。这个"精典源码之 实现自动接听和挂断电话功能.rar"压缩包很可能包含了一个示例项目,用于演示如何通过编程来完成...
【Android来电挂断demo】是一个基于Android平台的项目示例,它主要展示了如何实现来电时自动识别并处理未存储在联系人中的电话号码。通过这个Demo,开发者可以学习到如何集成来电拦截功能,并在主屏幕上展示相关信息...
在Android平台上,开发一款能够自动接听和挂断电话的应用是一个涉及到系统权限和电话管理API的复杂任务。这个源码提供了一个实例,展示了如何在Android应用中实现这一功能。以下是相关的关键知识点: 1. **电话监听...
在Android平台上,自动接听或挂断电话是一种常见需求,尤其对于开发者来说,这涉及到系统级的权限和接口调用。本项目"PhoneCallDemo"提供了一个完整的解决方案,它能够自动处理来电,包括自动接听和挂断操作。让我们...
应用启动后便可以在后台监听来电,并根据是否属于陌生电话和设置做出相应动作(自动接听还是直接拒绝),如果自动接听,将会产生一段振动以告知用户。 PS:因为老是有骚扰电话响一下就挂了,就想出这个阴招,叫它响...
在Android应用开发中,有时我们需要实现自动接听电话和挂断电话的功能,特别是在车载导航、自动化测试或特殊场景应用中。本篇文章将详细探讨如何使用Java语言在Android平台上实现这一功能,并且确保在各个版本的...
通过PhoneUtils类可以实现电话的自动接听功能,例如在收到来电时自动接听电话。 4. 获取ITelephony接口 通过TelephonyManager可以获取ITelephony接口,例如通过反射机制可以获取到ITelephony接口的实例。获取...
这个功能允许用户在不触碰手机或无任何视觉提示的情况下,自动接听来电,通常用于特定场景,如驾驶、会议等。接下来,我们将详细探讨如何在Android平台上实现这一功能及其相关知识点。 一、权限申请 在Android中,...
### Android来电时停止音乐播放的流程学习 #### 场景分析 在Android系统中,针对来电时音乐播放的控制机制可以分为以下两种典型场景: 1. **电话处于响铃模式时**: - 当有来电时,系统首先会自动暂停正在后台...
`PhoneUtils.java`这个文件可能是包含上述逻辑的一个工具类,或者包含了额外的功能,如处理来电显示、自动应答、挂断电话等。在实际开发中,你可能需要处理来电时启动Activity、播放提示音、显示自定义界面等功能。 ...
自动接听电话和挂断案例源码,参考:android 来电接听和挂断 支持目前所有版本。注意:android2.3版本及以上不支持下面的自动接听方法。(会抛异常:java.lang.SecurityException: Neither user xxxxx nor current ...