【手机勤务员】android自动切断来电,如果是手机号码回复一条短信

当你的手机需要更换新号码的时候,或者当你出国旅行不需要携带国内手机的时候,你的手机可以放在家中,当有人来电时自动挂断,如果对方是手机号码(11位长首位为1)就回复一条短信。

废话少提,直接上代码!

1、必须有如下权限:

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

2、在工程的Package Explorer中的src按右键选New、Package,输入:com.android.internal.telephony

3、在com.android.internal.telephony按右键选New、File,文件名:ITelephony.aidl,输入的内容如下:

package com.android.internal.telephony;

interface ITelephony
{
        boolean endCall();
}

4、在MainActivity加入以下代码:

    private ITelephony  iTelephony = null;
    private TelephonyManager iTeleManager = null;

    public void initTelephony() {
    	iTeleManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
    	Class <TelephonyManager> c = TelephonyManager.class;
    	Method getITelephonyMethod = null;
    	try {
    		getITelephonyMethod = c.getDeclaredMethod("getITelephony", (Class[])null);
    		getITelephonyMethod.setAccessible(true);
    		iTelephony = (ITelephony) getITelephonyMethod.invoke(iTeleManager, (Object[])null);
    	} catch (IllegalArgumentException e) {
    		e.printStackTrace();
    	} catch (Exception e) {
    		e.printStackTrace();
    	}
    }

    PhoneStateListener psl = new PhoneStateListener() {

    	@Override
    	public void onCallStateChanged(int state, String incomingNumber) {
    	    // TODO Auto-generated method stub
    		super.onCallStateChanged(state, incomingNumber);
    		switch(state){
    		case TelephonyManager.CALL_STATE_RINGING:
			Log.i("DEBUG", "uncall : " + incomingNumber);
			Message msg = new Message();
			msg.what = 3618;
			msg.obj = incomingNumber;
			handler.sendMessage(msg);
    			try {
   				// 当电话接入时,自动挂断。
   				iTelephony.endCall();
    			} catch (RemoteException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    			break;
    		}
    	}

    };

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initTelephony();
		iTeleManager.listen(psl, PhoneStateListener.LISTEN_CALL_STATE);
	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		iTeleManager.listen(null, 0);
	}

    private Handler handler = new Handler() {

		@Override
		public void handleMessage(Message msg) {
			// TODO Auto-generated method stub
			super.handleMessage(msg);
			myHandleMessage(msg);
		}

    };

    private void myHandleMessage(Message msg) {
    	if(msg.what == 3618) {
    		String phoneNumber = (String)msg.obj;
    		if(phoneNumber.length() == 11 && phoneNumber.charAt(0) == '1') {
    			 SmsManager sms = SmsManager.getDefault();
    			 String smsmsg = "您好,机主已经更新号码,有事请拨打:188 2318 3718。【手机勤务员】竭诚为您提供优质服务!";
    			 sms.sendTextMessage(phoneNumber, null, smsmsg, null, null);
    		}
    	}
    }

至此,手机勤务员的自动挂机并短信通知的优质服务宣告完成!

时间: 2024-08-29 20:05:46

【手机勤务员】android自动切断来电,如果是手机号码回复一条短信的相关文章

一条短信控制你的手机! Android平台的SQL注入漏洞浅析

14年11月笔者在百度xteam博客中看到其公开了此前报告给Google的CVE-2014-8507漏洞细节——系统代码在处理经由短信承载的WAP推送内容时产生的经典SQL注入漏洞,影响Android 5.0以下的系统.于是对这个漏洞产生了兴趣,想深入分析看看该漏洞的危害,以及是否能够通过一条短信来制作攻击PoC. 在断断续续的研究过程中,笔者发现了SQLite的一些安全特性演变和短信漏洞利用细节,本着技术探讨和共同进步的原则,结合以前掌握的SQLite安全知识一同整理分享出来,同各位安全专家一

Android通讯录管理(获取联系人、通话记录、短信消息)(二)

http://blog.csdn.net/wwj_748/article/details/19970271 Android通讯录管理(获取联系人.通话记录.短信消息)(二) 2014-02-26 11:40 9076人阅读 评论(11) 收藏 举报  分类: [Android通讯录模块开发](10)  版权声明:本文为博主原创文章,未经博主允许不得转载. Android通讯录管理(获取联系人.通话记录.短信消息)(二) 前言:上一篇博客介绍的是获取联系人的实现,本篇博客将介绍通话记录的实现. 同

android 发送短信 如何做到一条一条的发送,只有在上一条发送成功之后才发送下一条短信

android发送短信截获上一条发送是否成功,然后再来发送下一条短信 1.问题:在项目中遇到如下要求:待发短信有N条,实现一条一条的发送并在上一条短信发送成功之后再来发送下一条. for(int i=0;i<3;i++){ sendSMS(10086, text1, i); } private void sendSMS(String toAddress, String body, Long id) { // ---sends an SMS message to another device---

(转)[Android实例] 关于使用ContentObserver监听不到删除短信会话的解决方案

最近做通讯录的项目,需要实时监听短信的删除,就用到了观察者ContentObserver,怪异的事情就此发生,当我删除一条短信的时候,可以监听到,但是,当我删除整条短信的时候,就无法监听到,查了很多资料,都没有一个好的解决方案,顺便吐糟一下:大家来eoe发问题,问题解决了,也不说把解决的方法给大家分享一下... OK,先看源码吧com.android.providers.telephony.MmsSmsProvider这个类的删除操作源码 @Override    public int dele

android 发送短信 怎样做到一条一条的发送,仅仅有在上一条发送成功之后才发送下一条短信

android发送短信截获上一条发送是否成功,然后再来发送下一条短信 1.问题:在项目中遇到例如以下要求:待发短信有N条,实现一条一条的发送并在上一条短信发送成功之后再来发送下一条. for(int i=0;i<3;i++){ sendSMS(10086, text1, i); } private void sendSMS(String toAddress, String body, Long id) { // ---sends an SMS message to another device-

java攻城师之路(Android篇)--搭建开发环境、拨打电话、发送短信、布局例子

一.搭建开发环境 1.所需资源 JDK6以上 Eclipse3.6以上 SDK17, 2.3.3 ADT17 2.安装注意事项 不要使用中文路径 如果模拟器默认路径包含中文, 可以设置android_sdk_home环境变量解决.效果如下: 二.拨打电话 1.步骤 在Button节点中添加onClick属性, 指定一个方法名 在Activity中定义一个public void 方法名 (View view) 获取文本框中的号码 创建意图, 设置动作, 设置数据 使用意图开启Activity 2.

android手机短信发送

刚学android不久,最近卫卫发给我了一个视频,是怎样制作android手机上的短信发送器,一方面我感觉很有意思,另一方可以陪着她一起,今天弄完了,特来总结一下,虽然说比较简单吧,但还是有总结的必要的. 短信发送器主要是用于android下的短信发送的,其主要的界面就是输入发送母的人的号码和要发的信息的内容,主要界面有两个TextView和两个EditText还有一个Button(在import android.widget.*),下面是布局文件(layout): <?xml version=

android 添加手机短信,获取手机短信,删除手机短信和修改手机短信

注意添加权限: <uses-permission android:name="android.permission.READ_SMS"></uses-permission> <uses-permission android:name="android.permission.WRITE_SMS"></uses-permission> 代码如下: //更新短信 private void UpdateSMS() { /* u

Android实战简易教程-第三十六枪(监听短信-实现短信验证码自动填入)

一般用户喜欢用手机号作为用户名注册APP账号,这时一般都是通过手机验证码的方式进行验证,下面我们就研究一个非常实用的方法,通过监听短信-实现短信验证码的自动填入,提高用户体验. 首先我们看一下如何监听手机短信. 一.获取短信全部内容 1.新建一个SMSBroadcastReceiver: package com.example.messagecut; import java.text.SimpleDateFormat; import java.util.Date; import android.