- 浏览: 3009863 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 呼入电话的监听(来电监听)
需要权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
方式一:通过广播接收来电
定义来电广播接收类
package com.zhouzijing.android.demo; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.telephony.TelephonyManager; import android.util.Log; public class BroadcastReceiverMgr extends BroadcastReceiver { private final String TAG = MyBroadcastReceiver.TAG; @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Log.i(TAG, "[Broadcast]"+action); //呼入电话 if(action.equals(MyBroadcastReceiver.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); break; case TelephonyManager.CALL_STATE_IDLE: Log.i(TAG, "[Broadcast]电话挂断="+phoneNumber); break; case TelephonyManager.CALL_STATE_OFFHOOK: Log.i(TAG, "[Broadcast]通话中="+phoneNumber); break; } } }
定义Actitvity类
package com.zhouzijing.android.demo; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.Log; import android.view.View; public class MyBroadcastReceiver extends Activity { public final static String TAG = "MyBroadcastReceiver"; public final static String B_PHONE_STATE = TelephonyManager.ACTION_PHONE_STATE_CHANGED; private BroadcastReceiverMgr mBroadcastReceiver; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_broadcast_receiver); } //按钮1-注册广播 public void registerIt(View v) { Log.i(TAG, "registerIt"); mBroadcastReceiver = new BroadcastReceiverMgr(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(B_PHONE_STATE); intentFilter.setPriority(Integer.MAX_VALUE); registerReceiver(mBroadcastReceiver, intentFilter); } //按钮2-撤销广播 public void unregisterIt(View v) { Log.i(TAG, "unregisterIt"); unregisterReceiver(mBroadcastReceiver); } }
方式二:通过监听器来实现
package com.zhouzijing.android.demo; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.Log; import android.view.View; public class MyBroadcastReceiver extends Activity { public final static String TAG = "MyBroadcastReceiver"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_broadcast_receiver); } /** * 按钮-监听电话 * @param v */ public void createPhoneListener(View v) { TelephonyManager telephony = (TelephonyManager)getSystemService( Context.TELEPHONY_SERVICE); telephony.listen(new OnePhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE); } /** * 电话状态监听. * @author stephen * */ class OnePhoneStateListener extends PhoneStateListener{ @Override public void onCallStateChanged(int state, String incomingNumber) { Log.i(TAG, "[Listener]电话号码:"+incomingNumber); switch(state){ case TelephonyManager.CALL_STATE_RINGING: Log.i(TAG, "[Listener]等待接电话:"+incomingNumber); break; case TelephonyManager.CALL_STATE_IDLE: Log.i(TAG, "[Listener]电话挂断:"+incomingNumber); break; case TelephonyManager.CALL_STATE_OFFHOOK: Log.i(TAG, "[Listener]通话中:"+incomingNumber); break; } super.onCallStateChanged(state, incomingNumber); } } }
发表评论
-
Android Fragment 真正的完全解析(下)
2015-03-25 14:30 1129Android Fragment 真正 ... -
Android Fragment 真正的完全解析(上)
2015-03-25 10:14 916Android Fragment 真正的 ... -
Activity的生命周期方法
2015-03-25 09:54 590一:Activity的生命周期方法 Android ... -
Android在layout xml中使用include
2015-03-25 07:28 1008在Android的layout样式定义中,可以使 ... -
一个支持圆角的快速ImageView:RoundedImageView
2015-03-07 09:50 11102一个支持圆角的快速ImageView:Rounded ... -
ImageView图片设置
2015-03-05 23:08 964显示任意图像,例如图标。ImageView类可以加载 ... -
ListActivity的onListItemClick不响应的解决办法
2015-03-04 17:57 1116ListActivity的onListItemClic ... -
ListView中有控件隐藏或显示造成的显示错误问题
2015-03-03 23:03 1861ListView中有控件隐藏或显示造成的显示错误问题 ... -
Android中Application类用法
2015-03-03 09:12 1007Android中Application类用法 ... -
Android使用Application总结
2015-03-03 09:11 1203Android使用Application ... -
在android中运行java main方法
2015-02-27 10:38 1009在android中运行java main方法 ... -
android BitmapFactory.Options
2015-02-19 21:01 1043public Bitmap inBi ... -
android 基础demo例子
2015-02-16 21:06 843demoDatas.add(new DemoBe ... -
Android大图片裁剪终极解决方案
2015-02-15 17:08 2178Android大图片裁剪终 ... -
Android_照相机Camera_调用系统照相机返回data为空
2015-02-15 14:17 1299Android_照相机Camera_调用系统照相机返回 ... -
Android: 打印Bundle内容
2015-02-15 14:11 2994Android: 打印Bundle内容 有的时 ... -
android线程、UI、AsyncTask
2015-02-13 18:06 1291本文是转摘的,看过了觉得很好!所以转了过来!如果你想要 ... -
Fragment中ListView的使用
2015-02-06 23:01 2136Fragment中ListView的使用 直接 ... -
在安卓开发时用酷派手机无法打印出应用内的日志的解决方法
2014-12-11 20:39 1211在安卓开发时用酷派手机无法打印出应用内的日志的解决方法 ... -
查看安卓APK文件证书的方法
2014-12-04 10:05 1034************************** ...
相关推荐
4. **自动接听**:在电话状态变为`TelephonyManager.CALL_STATE_RINGING`时,表示有电话呼入。此时,可以调用`TelephonyManager`的`answerRingingCall()`方法接听电话。但要注意,由于安全原因,非系统应用可能无法...
在Android平台上,实现手机来电自动屏蔽功能涉及到对系统电话服务的深入理解和权限的获取。以下是一些关于如何在Android应用中实现这一功能的关键知识点: 1. **权限申请**: Android系统为了保护用户隐私,对涉及...
在这个来电拒接Demo中,我们创建一个BroadcastReceiver来监听电话相关的广播事件,特别是`TelephonyManager.ACTION_PHONE_STATE_CHANGED`这个事件,它会在电话状态改变时触发,如电话呼入、呼出或挂断。 2. **电话...
"自定义来电"涉及到对系统服务的拦截和处理,这通常需要创建一个BroadcastReceiver来监听来电广播。当电话打入时,BroadcastReceiver会接收到这个广播,然后启动我们自定义的Service来显示自定义的来电界面。 `....
在Android平台上,开发一个自动接听电话的程序涉及到多个核心知识点,包括权限管理、来电监听、系统服务、广播接收器以及电话API的使用。下面将详细阐述这些关键点。 首先,**权限管理**是Android应用程序的基础,...
当手机接收到电话呼入时,系统会发送一个ACTION_PHONE_STATE_CHANGED的广播,我们可以注册一个BroadcastReceiver监听这个广播,以便在电话状态改变时进行相应处理。 在`AndroidManifest.xml`文件中,我们需要声明...
1. **来电拦截**:通过监听电话状态广播,当电话呼入时,防火墙检查来电号码是否在黑名单中,如果匹配则阻止电话振铃或直接挂断。 2. **短信拦截**:对于短信,防火墙同样监听SMS_RECEIVED广播。一旦收到新短信,它...
- **BroadcastReceiver**:创建一个BroadcastReceiver,监听ACTION_PHONE_STATE广播,当有电话呼入时,接收广播并进行处理。 3. **短信拦截**: - **SMSBroadcastReceiver**:创建自定义的BroadcastReceiver,...
通过注册`PhoneStateListener`或者监听`ACTION_PHONE_STATE_CHANGED`广播事件,可以在电话呼入时接收到通知。 2. **悬浮窗(Floating Window)**:来电弹屏的界面通常是一个悬浮在其他应用上方的窗口。在Android中...
在广播接收器的`onReceive()`方法中,我们可以获取到电话的状态信息,如电话是否正在呼入、呼出或挂断。如果判断是来电,并且满足拦截条件(例如黑名单、特定时间段等),则可以阻止电话的正常接听,达到拦截的效果...
来电转移是一种电话服务,允许用户将呼入的电话自动转接到其他号码,无论是因为不在服务区、忙碌还是其他原因。本篇文章将深入探讨如何在Android系统上识别这类呼叫转移的来电,并介绍一个名为"Forwarded Call Alert...
Android 4.0的通话流程包括呼入、呼出、通话状态改变、AT命令的发送以及远程和本地挂断等关键环节。这些流程通常由多个组件协同完成,如电话服务(PhoneService)、RIL(Radio Interface Layer)、电话状态监听器...
当有电话呼入时,系统会调用这个方法,我们可以在其中根据业务需求判断是否需要拦截来电。通常,拦截来电会涉及到权限问题,需要在`AndroidManifest.xml`中添加`READ_PHONE_STATE`和`WRITE_APN_SETTINGS`权限。 ...
因此,首要步骤是创建一个BroadcastReceiver类,重写`onReceive()`方法,以便在电话呼入时触发我们的自定义行为。 ```java public class CallReceiver extends BroadcastReceiver { @Override public void ...
通话记录通常包括以下信息:通话时间、通话类型(呼入、呼出、未接)、对方号码、通话时长等。 用户可以通过系统设置或第三方应用查看通话记录。当请求通话记录时,应用会通过ContentResolver查询...
- INCOMING:来电状态,电话正被呼入。 - WAITING:等待接通,通常发生在多方通话或呼叫转移时。 - DISCONNECTED:通话已断开。 - DISCONNECTING:通话正在断开连接。 在GSMCallTracker中,系统会维护一个通话...
当电话呼入时,手机会接收到信号,这些信号包含了呼入电话所在的基站信息。通过比对数据库中的数据,可以确定该号码的归属地。数据库通常包含全国乃至全球的运营商信息、区号、城市信息等,以便进行精确匹配。 来电...
接下来,让我们聚焦于电话呼入机制。在Android中,系统默认不允许直接通过API拒接电话,但开发者可以通过注册BroadcastReceiver来监听手机状态。当来电时,可以动态地拦截来电事件,阻止电话接听并进行其他自定义...
但是,电话呼入则没有类似的机制。综合网上的一些资料,通过以下大体的步骤,可以实现拒接电话: 1. 注册 BroadcastReceiver 监视手机状态,监听 android.intent.action.PHONE_STATE 动作。 2. 取得可以控制电话的 ...
开发者可以通过查询这个表来获取最近的呼入、呼出和未接来电记录。字段如`NUMBER`(电话号码)、`TYPE`(通话类型)和`DATE`(通话时间)是常用的数据项。例如,要列出最近的五个通话记录,可以执行一个SQL查询并按...