1

当我收到短信时,我可以开始另一个活动。我想知道的是如何将文本消息与我的资源(xml 字符串)以及 textview、editText 中的内容进行比较是否可以从广播接收器类中的 textview 和 edittext 值中获取参考?下面是不比较任何值的情况下启动活动的代码。

公共类 SMSReceiver 扩展 BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) 
{       
    //---get the SMS message passed in---
    Bundle bundle = intent.getExtras();        
    SmsMessage[] msgs = null;
    String str = "";     
    String phonenumber = "";

    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]);                
            phonenumber=msgs[i].getOriginatingAddress(); 
            str += msgs[i].getMessageBody().toString();
            str += "\n";        
        }

        //=======launch the ShowMap1 when recieve SMS==============//
        Intent mainActivityIntent = new Intent(context, ShowMap2.class);
        mainActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        mainActivityIntent.putExtra("phn", phonenumber);
        mainActivityIntent.putExtra("sms", str);

        context.startActivity(mainActivityIntent);  
        //========================END=============================//  

    }                         
}

}

4

1 回答 1

0

据我了解,这将是一个接收短信的全球接收器。

因此,这意味着设备可以处于睡眠状态、主屏幕、某些游戏、gmail 或任何其他应用程序;所以这意味着 Activity 和 EditText 在此接收器被触发时不存在。

例如,您可以从 SharedPreferences 上的活动中保存先前输入的值,并根据这些值进行比较。

从 XML 资源中进行比较非常简单,您将通过此接收器接收对应用程序上下文的引用,只需使用它通过以下代码获取值:

String compare = context.getString(R.string.___);
于 2013-02-26T10:05:17.930 回答