recherche

Maison  >  Questions et réponses  >  le corps du texte

处理Android中,设置应用的优先级最高,然而短信应用依然最先收到广播导致无法拦截短信的问题

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

    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();//拦截短信
            }
        }
    }
巴扎黑巴扎黑2888 Il y a quelques jours543

répondre à tous(2)je répondrai

  • PHP中文网

    PHP中文网2017-04-17 17:36:25

    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.

    répondre
    0
  • 迷茫

    迷茫2017-04-17 17:36:25

    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

    répondre
    0
  • Annulerrépondre