Java android通过定位发件人跟踪短信

Java android通过定位发件人跟踪短信,java,android,Java,Android,我正在开发一个应用程序。我有跟踪信息中特定单词的代码,即“位置”。现在我想知道寄件人的位置,请帮忙 我的代码是 公共类SMSReceiver扩展了BroadcastReceiver{ final smsmsmanager sms=smsmsmanager.getDefault() @覆盖 公共void onReceive(上下文、意图){ if(intent.getAction().equals(“android.provider.Telephony.SMS_RECEIVED”)){ //从in

我正在开发一个应用程序。我有跟踪信息中特定单词的代码,即“位置”。现在我想知道寄件人的位置,请帮忙 我的代码是

公共类SMSReceiver扩展了BroadcastReceiver{ final smsmsmanager sms=smsmsmanager.getDefault()

@覆盖
公共void onReceive(上下文、意图){
if(intent.getAction().equals(“android.provider.Telephony.SMS_RECEIVED”)){
//从intent中检索扩展数据的映射。
final Bundle=intent.getExtras();
SmsMessage[]msgs=null;
字符串str=“”;
尝试
{
if(bundle!=null){
//--检索收到的sms消息
Object[]pdus=(Object[])bundle.get(“pdus”);
msgs=新SMS消息[PDU.length];

对于(int i=0;It短信元数据中没有位置信息,因此除非信息包含在短信文本中,否则您无法确定发件人的位置。@Mike M。完全是的,就像您所说的,信息包含在短信文本中。因此,我试图跟踪具有特定单词的邮件,并获取使用位置r:)如果是这种情况,那么在检查“位置”时,您可能希望使用
contains()
startsWith()
而不是
equals()
。除此之外,我们无法在不了解传入消息格式的情况下进一步帮助您。不过,老实说,这只不过是非常简单、非常基本的字符串操作和解析,您可以从Java文档或在线教程中学习。在发布问题之前,请进行一些研究并尝试自己解决问题.
@Override
public void onReceive(Context context, Intent intent) {
    if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){
        //retrieve a map of the extended data from the intent.

        final Bundle bundle = intent.getExtras();
        SmsMessage [] msgs = null;
        String str = "";

        try
        {
            if(bundle!=null){
                //-- retrieve the sms message received
                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]);
                    str += "SMS from" + msgs[i].getOriginatingAddress();
                    str +=":";
                    str += msgs[i].getMessageBody().toString();
                    str+="\n";
                }
                String replyPhone = msgs[0].getOriginatingAddress();
                String request = msgs[0].getMessageBody().toString();

                if(request.equals("position"))
                {
                    this.abortBroadcast();
                    Intent i = new Intent(context, RingActivity.class);
                    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    i.putExtra("num", replyPhone);
                    i.putExtra("msg", request);
                    context.startActivity(i);
                }
                }
            }catch(Exception e){
                Log.e("MyReceiver", "Exception smsReceiver" +e);
                }


    }


}