Android 收听来自无数字发送者的传入短信

Android 收听来自无数字发送者的传入短信,android,broadcastreceiver,Android,Broadcastreceiver,抱歉标题不准确,我不知道如何用英语表达这个概念 我想收听并存储由任何无数字id(如“FACEBOOK”或“VODAFONE”等)发送的传入短信 当一个普通的合成电话号码(如555-010-101和类似的号码)向我发送短信时,我通常会收听它并将其存储在电话数据库中 看来我不能对那些特殊的身份证做同样的事情 我的接收者与网络上的许多其他片段一样: @Override public void onReceive(Context context, Intent intent) { messag

抱歉标题不准确,我不知道如何用英语表达这个概念

我想收听并存储由任何无数字id(如“FACEBOOK”或“VODAFONE”等)发送的传入短信

当一个普通的合成电话号码(如555-010-101和类似的号码)向我发送短信时,我通常会收听它并将其存储在电话数据库中

看来我不能对那些特殊的身份证做同样的事情

我的接收者与网络上的许多其他片段一样:

@Override
public void onReceive(Context context, Intent intent) {

    message = "";
    contactName = "";

    // Get SMS map from Intent
    Bundle extras = intent.getExtras();

    if ( extras != null ) {

        // Get received SMS array
        Object[] smsExtra = (Object[]) extras.get(SMS_EXTRA_NAME);

        // Get ContentResolver object for pushing encrypted SMS to incoming folder
        ContentResolver contentResolver = context.getContentResolver();

        assert smsExtra != null;
        for (Object aSmsExtra : smsExtra) {
            sms = SmsMessage.createFromPdu((byte[]) aSmsExtra);

            String body = sms.getMessageBody();
            address = sms.getOriginatingAddress();

            message = body;

            Uri uriConversation = Uri.parse("content://mms-sms/conversations/");
            final String[] projection = new String[]{"*"};
            final String selection = address;

            Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(address));
            Cursor cursor = contentResolver.query(uri, new String[]{ContactsContract.PhoneLookup.DISPLAY_NAME}, null, null, null);

            // THREAD _ ID CURSOR
            Cursor thread_id_cursor = contentResolver.query(
                    uriConversation,
                    projection,
                    selection,
                    null,
                    null
            );

            if (thread_id_cursor.moveToFirst()) {
                thread_id = thread_id_cursor.getString(thread_id_cursor.getColumnIndexOrThrow(THREAD_ID));
            }

            if (cursor.moveToFirst()) {
                contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME));
            }

            if (contactName != null && contactName.equals("")) {
                contactName = address;
            }

            entireMessageText.append(sms.getDisplayMessageBody());

        }

        // Put the sms to database
        putSmsToDatabase(contentResolver, sms, entireMessageText.toString());

        NotificationHandler handler = new NotificationHandler(context);
        handler.build();

    }
}
我想我错过了一些特殊身份证的信息。
如果您有任何建议,我们将不胜感激。请提前感谢。

我使用此代码,工作正常。请检查它

@Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
            Bundle bundle = intent.getExtras();           //---get the SMS message passed in---
            SmsMessage[] msgs;
            String msg_from;
            if (bundle != null) {

                try {
                    Object[] pdus = (Object[]) bundle.get("pdus");
                    msgs = new SmsMessage[pdus.length];
                    for (int i = 0; i < msgs.length; i++) {
                        msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                        msg_from = msgs[i].getOriginatingAddress();
                        String msgBody = msgs[i].getMessageBody();



                        if (// Check msg_from ) {
                            // Do Your Action Hear 
                        }

                        Log.i("SMS Reciver", msgBody + "====>" + msg_from);
                    }
                } catch (Exception e) {
                    Log.d("Exception caught", e.getMessage());
                }

            }
        }


    }
@覆盖
公共void onReceive(上下文、意图){
if(intent.getAction().equals(“android.provider.Telephony.SMS_RECEIVED”)){
Bundle Bundle=intent.getExtras();//---获取传入的SMS消息---
短信[]短信;
字符串msg_from;
if(bundle!=null){
试一试{
Object[]pdus=(Object[])bundle.get(“pdus”);
msgs=新SMS消息[PDU.length];
对于(int i=0;i“+msg_from);
}
}捕获(例外e){
Log.d(“捕获异常”,例如getMessage());
}
}
}
}

谢谢!您的代码与我的代码几乎相同。您是否正确地接收到来自特殊ID的消息?谢谢!我会尽快进行测试!我已经测试过了,但不幸的是它不起作用。我正在使用他们通过短信发送的facebook批准登录代码进行测试。没有收到任何消息,也没有日志。我会接到任何可能的来电要解决这个问题吗?@mehul9595这是可能的,是的。