-1

I'm having a NoSuchElementFoundException but I'm unable to find the line where the pb is. Whenever my program receives SMS it throws this exception.

Bundle bundle = intent.getExtras();
Object[] messages = (Object[]) bundle.get("pdus");
SmsMessage[] sms = new SmsMessage[messages.length];
for(int n = 0; n < messages.length; n++) {
    sms[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
}
for(SmsMessage msg : sms) {
    if(msg.getOriginatingAddress().equals("+923313552256") 
        && Data.login == true 
        && !(msg.getMessageBody().contains("OK"))) {
        MainActivity.startAlarm(msg.getMessageBody(),context);
    }
    if(msg.getOriginatingAddress().equals("+923313552256") 
        && msg.getMessageBody().contains("OK")) {   
        LoginPage.redirect();
    }
}

StartAlarm in MainActivity

public static void startAlarm(String msg,Context context)
{
    Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
    mp = MediaPlayer.create(context, notification);
    mp.start();
    btstop.setVisibility(1);    
    btmap.setVisibility(1); 
    StringTokenizer tokens = new StringTokenizer(msg, " ");
    plat = tokens.nextToken();
    plong = tokens.nextToken();
}

logcat:

09-06 20:04:21.619: E/AndroidRuntime(16819): FATAL EXCEPTION: main
09-06 20:04:21.619: E/AndroidRuntime(16819): java.lang.RuntimeException: Unable to start receiver com.example.hurryapppointalert_client.TextMessageReceiver: java.util.NoSuchElementException
09-06 20:04:21.619: E/AndroidRuntime(16819):    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2140)
09-06 20:04:21.619: E/AndroidRuntime(16819):    at android.app.ActivityThread.access$1500(ActivityThread.java:128)
09-06 20:04:21.619: E/AndroidRuntime(16819):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1211)
09-06 20:04:21.619: E/AndroidRuntime(16819):    at android.os.Handler.dispatchMessage(Handler.java:99)
09-06 20:04:21.619: E/AndroidRuntime(16819):    at android.os.Looper.loop(Looper.java:137)
09-06 20:04:21.619: E/AndroidRuntime(16819):    at android.app.ActivityThread.main(ActivityThread.java:4517)
09-06 20:04:21.619: E/AndroidRuntime(16819):    at java.lang.reflect.Method.invokeNative(Native Method)
09-06 20:04:21.619: E/AndroidRuntime(16819):    at java.lang.reflect.Method.invoke(Method.java:511)
09-06 20:04:21.619: E/AndroidRuntime(16819):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
09-06 20:04:21.619: E/AndroidRuntime(16819):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
09-06 20:04:21.619: E/AndroidRuntime(16819):    at dalvik.system.NativeStart.main(Native Method)
09-06 20:04:21.619: E/AndroidRuntime(16819): Caused by: java.util.NoSuchElementException
09-06 20:04:21.619: E/AndroidRuntime(16819):    at java.util.StringTokenizer.nextToken(StringTokenizer.java:208)
09-06 20:04:21.619: E/AndroidRuntime(16819):    at com.example.hurryapppointalert_client.MainActivity.startAlarm(MainActivity.java:156)
09-06 20:04:21.619: E/AndroidRuntime(16819):    at com.example.hurryapppointalert_client.TextMessageReceiver.onReceive(TextMessageReceiver.java:26)
09-06 20:04:21.619: E/AndroidRuntime(16819):    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2133)
09-06 20:04:21.619: E/AndroidRuntime(16819):    ... 10 more
durron597
  • 31,968
  • 17
  • 99
  • 158

1 Answers1

0

It looks like your error occurs because the msg argument to startAlarm doesn't have multiple tokens in it; you call nextToken() twice but if there's no space it will fail on the second one.

You should check the value of msg (probably by Log.d(msg)) and make sure it's what you think it is.

durron597
  • 31,968
  • 17
  • 99
  • 158