Android手机自动发送短信


        最近有一个想法,就是如果我此刻不方便接电话,想发一条信息告诉对方。因为是不方便嘛,所以那时再手打好信息发给对方是不现实的。如果我们能预先就写好了信息,不方便接听时手机自动帮我们把信息发给来电的朋友,那就方便多了。怎么实现呢?

        首先我声明一下,我说的是Android手机啦,苹果嘛,水果店几块钱一斤的还是买得起的。hehe...

        需求分析一下:1、给来电人发信息,要获得来电人的来电号码;

                                     2、让系统发送你编辑好的短信。

        获得来电号码,需要用到一个类:ThelephonyManager  

        TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法。其中包括手机SIM的状态和信息、电信网络的状态及手机用户的信息。在应用程序中可以使用这些get方法获取相关数据。            

       TelephonyManager类的对象可以通过Context.getSystemService(Context.TELEPHONY_SERVICE)方法来获得,需要注意的是有些通讯信息的获取对应用程序的权限有一定的限制,在开发的时候需要为其添加相应的权限。

        本程序就用到了TelephonyManager给电话服务增加状态监听器,监听来电,通话,挂断等状态 。

        PhoneStateListener,获得当前的电话状态,并获得来电号码;

        

TelephonyManager tpm;  
tpm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);//获取电话通讯服务  
        tpm.listen(new MyPhoneStateListener(),PhoneStateListener.LISTEN_CALL_STATE);//给电话服务增加状态监听器,监听来电,通话,挂断等状态  

class MyPhoneStateListener extends PhoneStateListener {  
        @Override  
        public void onCallStateChanged(int state, String incomingNumber) {  
            num = incomingNumber;  
            switch(state) {  
            case TelephonyManager.CALL_STATE_IDLE: //空闲  
                break;  
            case TelephonyManager.CALL_STATE_RINGING: //来电
            	if(isSendMes){
                    sendMes();  //短信发送
            	}
                break;  
            case TelephonyManager.CALL_STATE_OFFHOOK: //摘机(正在通话中)  
                break;  
            }  
        }  
    }

    incomeNumber就是我们所需要的来电号码;

    

private void sendMes(){  
        //直接调用短信接口发短信  
        SmsManager smsManager = SmsManager.getDefault();  
        
            smsManager.sendTextMessage(num, null, text, null, null);    
        
    }  
      text是我们要发送的信息。

      完成上面的工作之前,要在AndroidManifest.xml加入权限:

<pre name="code" class="html"> <uses-permission  android:name="android.permission.SEND_SMS"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值