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