Android实现判断手机未接来电及处理方法

通常来说Android手机没有未接来电的监听器,如果要实现对未接来电的处理,则需要自己编写程序来实现。本文所述程序实例即为Android实现判断手机未接来电及处理方法。主要分为四个步骤来进行:

1、编写CallListener,处理手机状态变更监听,当状态改变时进行处理:

package rbase.app.smshelpmate.call.listener; import java.text.MessageFormat; import rbase.app.smshelpmate.Config; import rbase.app.smshelpmate.R; import rbase.app.smshelpmate.call.enums.CallStateEnum; import rbase.app.smshelpmate.forward.ForwardManager; import rbase.app.smshelpmate.forward.enums.ForwardType; import rbase.app.smshelpmate.forward.vo.ForwardParam; import android.content.Context; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.Log; public class CallListener extends PhoneStateListener { private static final String TAG = "sms"; private static int lastetState = TelephonyManager.CALL_STATE_IDLE; //最后的状态 private Context context; public CallListener(Context context) { super(); this.context = context; } public void onCallStateChanged(int state, String incomingNumber) { Log.v(TAG, "CallListener call state changed : " + incomingNumber); String m = null; // 如果当前状态为空闲,上次状态为响铃中的话,则认为是未接来电 if(lastetState == TelephonyManager.CALL_STATE_RINGING && state == TelephonyManager.CALL_STATE_IDLE){ sendSmgWhenMissedCall(incomingNumber); } //最后改变当前值 lastetState = state; } private void sendSmgWhenMissedCall(String incomingNumber) { //未接来电处理(发短信,发email等) } }

2、编写CallReceiver,注册来电广播接收器:

package rbase.app.smshelpmate.call.service; import rbase.app.smshelpmate.Const; import rbase.app.smshelpmate.call.listener.CallListener; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.Log; public class CallReceiver extends BroadcastReceiver{ public void onReceive(Context context, Intent intent) { Log.i("sms", "CallReceiver Start..."); TelephonyManager telephony = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); CallListener customPhoneListener = new CallListener(context); telephony.listen(customPhoneListener, PhoneStateListener.LISTEN_CALL_STATE); Bundle bundle = intent.getExtras(); String phoneNr = bundle.getString("incoming_number"); Log.i("sms", "CallReceiver Phone Number : " + phoneNr); } }

3、在AndroidManifest.xml中的application节点下注册电话状态改变的广播接收:

<manifest ...> <application ...> <receiver android:name=".call.service.CallReceiver"> <intent-filter android:priority="100"> <action android:name="android.intent.action.PHONE_STATE" /> </intent-filter> </receiver> </application> </manifest>

4、在AndroidManifest.xml中添加读取手机状态的权限:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

通过以上的步骤,当手机有未接来电时 sendSmgWhenMissedCall 该方法就会触发,就可以进行相应的处理。

时间: 2024-11-27 18:26:46

Android实现判断手机未接来电及处理方法的相关文章

Android实现判断手机未接来电及处理方法_Android

通常来说Android手机没有未接来电的监听器,如果要实现对未接来电的处理,则需要自己编写程序来实现.本文所述程序实例即为Android实现判断手机未接来电及处理方法.主要分为四个步骤来进行: 1.编写CallListener,处理手机状态变更监听,当状态改变时进行处理: package rbase.app.smshelpmate.call.listener; import java.text.MessageFormat; import rbase.app.smshelpmate.Config;

小米手机未接来电提醒设置教程

给各位小米手机的使用者们来详细的解析分享一下未接来电提醒的设置教程. 教程分享: 1.打开小米手机拨号界面,点左下角的菜单按钮. 2.点击[电话设置] 3.下拉至底部,点击[高级设置] 4.点击[未接来电提醒次数],然后设置你想要提醒的次数. 这样如果你有了未接来电,每隔5分钟就会进行一次提醒,这样即便第一时间没有接到电话,也不会耽误事情太久了. 好了,以上的信息就是小编给各位小米手机的使用者们带来的详细的未接来电提醒的设置教程解析分享的全部内容了,各位看到这里的使用者们,小编相信你们现在那是非

Android实现获取未接来电和未读短信数量的方法_Android

本文实例展示了Android实现获取未接来电和未读短信数量的方法,在Android程序开发中非常常见,是非常实用的功能,现分享给大家供大家参考.具体如下: 一.未读短信  首先注册Observer,当有新短信或彩信来的时候会调用 onChange方法,我们可以在onChange方法中去获取未读短信和彩信,然后做一些UI上的处理! 具体功能代码如下: private ContentObserver newMmsContentObserver = new ContentObserver(new Ha

Android实现获取未接来电和未读短信数量的方法

本文实例展示了Android实现获取未接来电和未读短信数量的方法,在Android程序开发中非常常见,是非常实用的功能,现分享给大家供大家参考.具体如下: 一.未读短信   首先注册Observer,当有新短信或彩信来的时候会调用 onChange方法,我们可以在onChange方法中去获取未读短信和彩信,然后做一些UI上的处理! 具体功能代码如下: private ContentObserver newMmsContentObserver = new ContentObserver(new H

cursor-Android获取未接来电失败

问题描述 Android获取未接来电失败 通过点击按钮获取为借来电的信息,并以对话框形式显示未接来电的号码.虚拟机中测试通过,但在真机上运行时会直接强制退出. 代码: @Override public void onClick(View v) { final String[] projection = null; final String selection = null; final String[] selectionArgs = null; final String sortOrder =

Android中判断手机是否联网实例_Android

本文实例讲述了Android中判断手机是否联网的方法,分享给大家供大家参考.具体步骤如下: 首先在AndroidManifest.xml中添加与连接网络相关的权限: 复制代码 代码如下: <uses-permission android:name="android.permission.INTERNET"></uses-permission>  <uses-permission android:name="android.permission.A

Android编程判断手机上是否安装了某个程序的方法

本文实例讲述了Android编程判断手机上是否安装了某个程序的方法.分享给大家供大家参考,具体如下: 1. 首先得到该程序的包名 这个连上手机ADB,看logcat就能看到.比如:QQ客户端的包名是com.tencent.mobileqq. 2. 然后通过PackageManager判断是否存在该包的程序 private boolean isPkgInstalled(String pkgName) { PackageInfo packageInfo = null; try { packageIn

Android中判断手机是否联网实例

本文实例讲述了Android中判断手机是否联网的方法,分享给大家供大家参考.具体步骤如下: 首先在AndroidManifest.xml中添加与连接网络相关的权限: 复制代码 代码如下:<uses-permission android:name="android.permission.INTERNET"></uses-permission>  <uses-permission android:name="android.permission.AC

Android实现判断某个服务是否正在运行的方法_Android

本文实例讲述了Android实现判断某个服务是否正在运行的方法.分享给大家供大家参考,具体如下: /** * 判断某个服务是否正在运行的方法 * * @param mContext * @param serviceName * 是包名+服务的类名(例如:net.loonggg.testbackstage.TestService) * @return true代表正在运行,false代表服务没有正在运行 */ public boolean isServiceWork(Context mContex