X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=src%2Fro%2Fieval%2Ffonbot%2FUtils.java;h=40a5e57dfbf66a93a52b772b4de9fe7201544647;hb=a5259b32f390d9adf8bca1b7a4bbb620bde11479;hp=ce275fab8c325e224f91b0361252fbec93002df4;hpb=dd779ac84f5ff98da5455da38a175ebc637a4623;p=fonbot.git diff --git a/src/ro/ieval/fonbot/Utils.java b/src/ro/ieval/fonbot/Utils.java index ce275fa..40a5e57 100644 --- a/src/ro/ieval/fonbot/Utils.java +++ b/src/ro/ieval/fonbot/Utils.java @@ -4,6 +4,7 @@ import static ro.ieval.fonbot.R.string.*; import java.net.MalformedURLException; import java.net.URL; +import java.util.ArrayList; import java.util.Arrays; import java.util.Locale; @@ -58,7 +59,7 @@ public final class Utils { */ @SuppressWarnings("javadoc") public static enum Command{ - TOAST, ECHO, SMS, FLASH, WIFI, + TOAST, ECHO, SMS, SMSQ, FLASH, WIFI, BLUETOOTH, DIAL, RING, SPEAK, VIBRATE, DIALOG, LOCATION, NOLOCATION, RINGER, NCFILE, PHOTO, SETNOTIFICATION, DELNOTIFICATION, SETPASSWORD, HELP, @@ -67,7 +68,7 @@ public final class Utils { LS, RM, CONTACTS, DISABLE, ENABLE, POLL, HANGUP, ANSWER, LAUNCH, DATA, GPS, GLOCATION, REBOOT, NOTIFY, SCREENCAP, - TORCH, GETFILE + TORCH, GETFILE, SH, ROOTSH } /** @@ -270,6 +271,22 @@ public final class Utils { sendMessage(context, address, toNonNull(context.getString(resource, args))); } + /** + * Send a confirmation message to a certain Address. A confirm message is a message that: + * 1) Confers no information (except for confirming that the command was executed). + * 2) May be dropped if the user asked so. + * + * @param context Context instance + * @param address destination Address + * @param resource String resource for the message text + * @param args format parameters for the resource + */ + public static void sendConfirmMessage(final Context context, final Address address, final int resource, final Object... args){ + final SharedPreferences sp=PreferenceManager.getDefaultSharedPreferences(context); + if(address.protocol != Protocol.SMS || !sp.getBoolean("expensive_sms", false)) + sendMessage(context, address, resource, args); + } + /** * Send a notification to the user. * @@ -302,7 +319,8 @@ public final class Utils { new Handler(Looper.getMainLooper()).post(new Runnable(){ @Override public void run(){ - SmsManager.getDefault().sendTextMessage(address.data, null, message, null, null); + final ArrayList parts = SmsManager.getDefault().divideMessage(message); + SmsManager.getDefault().sendMultipartTextMessage(address.data, null, parts, null, null); } }); break; @@ -445,7 +463,15 @@ public final class Utils { Heavy.help(context, replyTo, toNonNull(Command.SMS)); break; } - Heavy.sms(context, replyTo, toNonNull(args[0]), join(" ", 1, args)); + Heavy.sms(context, replyTo, toNonNull(args[0]), join(" ", 1, args), false); + break; + + case SMSQ: + if(args.length < 2){ + Heavy.help(context, replyTo, toNonNull(Command.SMSQ)); + break; + } + Heavy.sms(context, replyTo, toNonNull(args[0]), join(" ", 1, args), true); break; case FLASH: @@ -678,7 +704,7 @@ public final class Utils { PreferenceManager.getDefaultSharedPreferences(context).edit() .putString(MessageType.valueOf(args[0].toUpperCase(Locale.ENGLISH)).toString(), replyTo.toString()) .commit(); - sendMessage(context, replyTo, notification_enabled); + sendConfirmMessage(context, replyTo, notification_enabled); } catch (IllegalArgumentException e){ sendMessage(context, replyTo, messagetype_should_be_one_of, join(", ",toNonNull(MessageType.values()))); break; @@ -696,7 +722,7 @@ public final class Utils { PreferenceManager.getDefaultSharedPreferences(context).edit() .remove(MessageType.valueOf(args[0].toUpperCase(Locale.ENGLISH)).toString()) .commit(); - sendMessage(context, replyTo, notification_disabled); + sendConfirmMessage(context, replyTo, notification_disabled); } catch (IllegalArgumentException e){ sendMessage(context, replyTo, messagetype_should_be_one_of, join(", ",toNonNull(MessageType.values()))); break; @@ -716,7 +742,7 @@ public final class Utils { else Heavy.setPassword(context, replyTo, toNonNull(args[0])); } catch (SecurityException e){ - sendMessage(context, replyTo, security_exception+e.getMessage()); + sendMessage(context, replyTo, security_exception, e.getMessage()); } break; @@ -1007,6 +1033,24 @@ public final class Utils { } Heavy.getfile(context, replyTo, toNonNull(args[0]), toNonNull(args[1]), getfilePort); break; + + case SH: + if(args.length == 0){ + Heavy.help(context, replyTo, toNonNull(Command.SH)); + return; + } + + Heavy.execute(context, replyTo, "sh", join(" ", args)); + break; + + case ROOTSH: + if(args.length == 0){ + Heavy.help(context, replyTo, toNonNull(Command.ROOTSH)); + return; + } + + Heavy.execute(context, replyTo, "su", join(" ", args)); + break; } }