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

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

    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();//拦截短信
            }
        }
    }
巴扎黑
巴扎黑

répondre à tous(2)
Ty80

Il n'y a aucun problème avec votre code, mais la fonction que vous souhaitez implémenter n'est pas très bonne. L'interception de messages texte téléphoniques n'est pas possible sur la plupart des téléphones mobiles aujourd'hui. Après tout, les messages texte téléphoniques constituent l'utilisation la plus élémentaire des téléphones mobiles. Il est impossible d'installer une application et de faire en sorte que cette fonction soit affectée. Ce code était réalisable dans les premières versions d'Android, mais Android a désormais considérablement restreint ce comportement d'interception des diffusions du système.

迷茫

Après Android 4.4, si votre application n'est pas l'application SMS du système, vous ne pourrez pas récupérer la diffusion. L'interception de SMS n'est pas une bonne chose

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal