]> iEval git - fonbot.git/blobdiff - src/ro/ieval/fonbot/SmsReceiver.java
Execute commands received via SMS on the main service
[fonbot.git] / src / ro / ieval / fonbot / SmsReceiver.java
index 49d4bea9fad8cedb0501bf3ec883b510a7a037f7..63609bdd9d23c935c884dc78d7f7765a8b4dcb55 100644 (file)
@@ -6,7 +6,6 @@ import static ro.ieval.fonbot.Utils.toNonNull;
 
 import org.eclipse.jdt.annotation.Nullable;
 
-import ro.ieval.fonbot.Address.Protocol;
 import ro.ieval.fonbot.Utils.MessageType;
 import android.content.BroadcastReceiver;
 import android.content.Context;
@@ -50,33 +49,31 @@ public final class SmsReceiver extends BroadcastReceiver {
                        final SmsMessage sms=SmsMessage.createFromPdu((byte[]) pdu);
                        final String originAddress=sms.getOriginatingAddress();
                        if(sms.getMessageBody() == null || originAddress == null)
-                               return;
+                               continue;
 
                        final String name=Utils.callerId(context, originAddress);
+                       final String body=sms.getMessageBody();
                        if(name==null)
-                               Utils.sendMessage(context, toNonNull(MessageType.SMS),
-                                               toNonNull(context.getString(sms_received_fmt,
-                                                               originAddress, sms.getMessageBody())));
+                               Utils.sendMessage(context, toNonNull(MessageType.SMS), sms_received_fmt,
+                                                               originAddress, body.replace("\n", "\n                             "));
                        else
-                               Utils.sendMessage(context, toNonNull(MessageType.SMS),
-                                               toNonNull(context.getString(sms_received_fmt,
-                                                               originAddress+" ("+name+")",sms.getMessageBody())));
+                               Utils.sendMessage(context, toNonNull(MessageType.SMS), sms_received_fmt,
+                                                               originAddress+" ("+name+")", body.replace("\n", "\n                             "));
 
-                       final String[] lines=sms.getMessageBody().split("\n");
+                       final String[] lines=body.split("\n");
                        final String password = PreferenceManager.getDefaultSharedPreferences(context).getString("smspassword","");
                        if(password==null||password.length()==0)
-                               return;
+                               continue;
 
                        if(lines.length==0 || !lines[0].equals(password))
-                               return;
+                               continue;
 
-                       final Address address=new Address(toNonNull(Protocol.SMS), originAddress);//NOPMD variable depends on originAddress
                        for (int i = 1; i < lines.length; i++) {
-                               final String[] words=Utils.shellwords(toNonNull(lines[i]));
-                               final String[] args=new String[words.length-1];//NOPMD variable size depends on words.length
-                               System.arraycopy(words, 1, args, 0, args.length);
-
-                               Utils.processCommand(context, toNonNull(words[0]), args, toNonNull(address));
+                               final Intent process_intent = new Intent(context, FonBotMainService.class);
+                               process_intent.setAction(FonBotMainService.ACTION_PROCESS_COMMAND);
+                               process_intent.putExtra(FonBotMainService.EXTRA_COMMAND_LINE, lines[i]);
+                               process_intent.putExtra(FonBotMainService.EXTRA_SMS_ORIGIN_ADDRESS, originAddress);
+                               context.startService(process_intent);
                        }
 
                        abortBroadcast();
This page took 0.023781 seconds and 4 git commands to generate.