监视系统 电话和短信
监视系统 电话和短信
梦想家Peng 发表于2年前
监视系统 电话和短信
  • 发表于 2年前
  • 阅读 5
  • 收藏 0
  • 点赞 1
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

呼出电话
-----------------------------------
【工作机制】
当呼出电话时,系统会发出一个有序广播,并且,将呼叫的电话号码通过setResultData()进行封装,最后,呼叫程序接收到该广播后,实现呼出。
【实现原理】
通过getResultData()获取电话号码,根据自定义的逻辑对号码进行判断,在有必要的时候,通过setResultData()修改电话号码。
权限:android.permission.PROCESS_OUTGOING_CALLS
广播Action:android.intent.action.NEW_OUTGOING_CALL

监听短信
-----------------------------------
【工作原理】当新的短信到来时,系统会发出广播,并且将短信的相关数据封装在Intent中。
【实现过程】
权限:android.permission.RECEIVE_SMS
广播Action:android.provider.Telephony.SMS_RECEIVED

eg:

public class SmsReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // 日志
        Log.d("tag", "SmsReceiver.onReceive()");

        // 短信的数据对象
        SmsMessage msg;
        // 从Intent中获取短信的内容,每次收到的短信可能由多条短信组成
        Object[] pdus = (Object[]) intent.getExtras().get("pdus");
        // 短信的数据
        byte[] pdu;
        // 循环获取的短信内容,即循环时每次读1条短信的数据
        for (int i = 0; i < pdus.length; i++) {
            // 获取短信的数据
            pdu = (byte[]) pdus[i];
            // 将数据封装为SmsMessage对象
            msg = SmsMessage.createFromPdu(pdu);
            // 获取短信的内容
            String address = msg.getOriginatingAddress();
            String body = msg.getMessageBody();
            Date date = new Date(msg.getTimestampMillis());
            // 日志输入显示
            Log.d("tag", "address -> " + address);
            Log.d("tag", "date -> " + date);
            Log.d("tag", "body -> " + body);
        }
    }

}

监听来电

-----------------------------------
【工作原理】当新的呼叫到来时,系统会发出广播。
【实现过程】
权限:

android.permission.READ_PHONE_STATE
android.permission.CALL_PHONE
广播Action:android.intent.action.PHONE_STATE
【挂断电话】
问题1:ITelephony可以实现挂断电话,但是该类型不可识别,则需要自定义ITelephony的aidl文件
问题2:获取ITelephony对象可以通过TelephonyManager的getITelephony()方法获取,但是,该方法是使用private修饰的私有方法

共有 人打赏支持
粉丝 0
博文 33
码字总数 15605
×
梦想家Peng
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: