处理Android中,设置应用的优先级最高,然而短信应用依然最先收到广播导致无法拦截短信的问题
巴扎黑
巴扎黑 2017-04-17 17:34:25
0
2
500

//拦截短信验证码的广播

    IntentFilter intercptFilter = new IntentFilter();
    intercptFilter.addAction(SmsInterceptReceiver.ACTION_SMS_INTERCEPT);
    intercptFilter.setPriority(Integer.MAX_VALUE);
    smsInterceptReceiver = new SmsInterceptReceiver();
    mContext.registerReceiver(smsInterceptReceiver, intercptFilter);

//发送广播
context.sendOrderedBroadcast(intent, null);

@Override

public void onReceive(Context context, Intent intent) {
    // 拦截短信
    String action = intent.getAction();
    Log.d("打印广播类型:"+action);
    Bundle bundle = intent.getExtras();
    if(bundle==null){
        return;
    }

    if(action!=null&&action.equals(ACTION_SMS_INTERCEPT)){
        Object[] pdus = (Object[])bundle.get("pdus");

        if (pdus != null && pdus.length > 0)
        {
            SmsMessage[] messages = new SmsMessage[pdus.length];
            int length = messages.length;
            for (int i = 0; i < length; i++)
            {
                byte[] pdu = (byte[])pdus[i];
                messages[i] = SmsMessage.createFromPdu(pdu);
            }
            for (SmsMessage msg : messages){
                 // 获取短信内容
                String content = msg.getMessageBody();
                String sender = msg.getOriginatingAddress();
                analysisMessage(sender,content);
            }
            Log.d("是否要向用户显示短信,1是:"+isShowSms);
            if(isShowSms==1){
                abortBroadcast();//拦截短信
            }
        }
    }
巴扎黑
巴扎黑

모든 응답(2)
Ty80

코드에는 문제가 없지만 구현하려는 기능이 별로 좋지 않습니다. 오늘날 대부분의 휴대전화에서는 전화 문자 메시지를 가로채는 것이 불가능합니다. 결국 전화 문자 메시지는 휴대전화의 가장 기본적인 용도이므로 앱을 설치하는 것은 불가능하며 이 기능에 영향을 미칩니다. 이 코드는 초기 Android 버전에서는 가능했지만 이제 Android에서는 시스템 브로드캐스트를 가로채는 동작을 크게 제한했습니다.

迷茫

Android 4.4 이후에는 시스템의 SMS 애플리케이션이 아닌 경우 방송을 잡을 수 없습니다. SMS 차단은 좋지 않습니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿