Aplicacion para SMS premium

Los SMS premium están en franca decadencia. Sin embargo, dependiendo de la calidad del servicio provisto, todavía es posible obtener una ganancia decente.

Un cliente me planteó la idea de crear una aplicación Android que permita precisamente esto: Enviar una respuesta automáticamente a los SMS recibidos, de acuerdo al contenido del mismo. Por ejemplo, si se recibe el texto Triple, se envíe una respuesta apropiada.

Para ello, obviamente se requiere una Base de Datos que pueda ser modificada en tiempo real, para permitir cierto dinamismo en las respuestas. He decidido usar el excelente servicio prestado por Parse.com ya que facilita el trabajo. Para mayor detalle, siempre se puede consultar la documentación.

Parse.com class with object details
Parse.com class with object details

Por último, es de hacer notar que desde Android 4.4, ninguna aplicacion puede tener el control total de de los SMS a menos que el usuario seleccione nuestra aplicacion como la aplicacion de SMS por defecto. Pero esto se puede evitar usando simplemente SmsManager

El Gist en GiHub:

package com.leonelatencio.mysms;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.provider.Telephony;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
import android.util.Log;
import com.parse.FindCallback;
import com.parse.GetCallback;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseQuery;
import java.util.List;
/**
* Created by Leonel on 18-04-2015.
*/
public class SmsListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Telephony.Sms.Intents.SMS_RECEIVED_ACTION.equals(intent.getAction())) {
for (SmsMessage smsMessage : Telephony.Sms.Intents.getMessagesFromIntent(intent)) {
final String messageBody = smsMessage.getMessageBody();
final String messageFrom = smsMessage.getOriginatingAddress();
//Log Received SMS
Log.d("SMS", "Message received: " + messageBody + " From: " + messageFrom);
//Save received SMS to Parse
ParseObject testObject = new ParseObject("SMSRec");
testObject.put("From", messageFrom);
testObject.put("Message", messageBody);
testObject.saveInBackground();
//Query Reply Message in Parse
ParseQuery<ParseObject> query = ParseQuery.getQuery("SMSContent");
query.whereEqualTo("keyWord", messageBody);
query.getFirstInBackground(new GetCallback<ParseObject>() {
public void done(ParseObject object, ParseException e) {
if (object == null) {
Log.d("SMS", "Cant find a response.");
} else {
String responseBody = object.getString("responseText");
Log.d("SMS", "Found a response to" + messageBody + ":/n" + responseBody);
//Finally, try to send SMS.
sendSMS(messageFrom, responseBody);
}
}
});
}
}
}
public void sendSMS(String replyTo, String replyBody){
try {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(replyTo, null, replyBody, null, null);
//Log sent message.
Log.d("SMS", "Sending message: " + replyBody + " To: " + replyTo);
} catch (Exception ex) {
//Log failed SMS.
Log.d("SMS", "Sending failed: " + replyBody + " To: " + replyTo);
}
}
}

Main Activity
Main Activity

Twitter suprimirá las contraseñas de acceso: ¿Cómo entraremos en nuestra cuenta?

 

Twitter Passwords

En la conferencia de desarrolladores en San Francisco, Jeff Seibert, director de plataformas móviles de Twitter, presentó el sistema Digits, que la red social ofrece de forma gratuita en 28 idiomas de 216 países.

El funcionamiento del Digits será sencillo: al introducir el número de móvil asociado a la cuenta, le llega un SMS con un código temporal. Para cada sesión hay que repetir la operación. Los gastos del envío del mensaje corren a cargo de Twitter.

A su juicio, el nuevo sistema es mejor que la combinación actual de un ‘e-mail’, que resulta difícil de teclear en los teléfonos móviles y son más susceptible de pirateo.

«Cada vez más y más, el número de teléfono se convierte en el identificador principal de un individuo en comparación con  la dirección de correo electrónico. En los mercados en desarrollo a menudo es el único identificador, ya que algunos propietarios de teléfonos inteligentes a menudo no tienen direcciones de correo electrónico», anunció Twitter en un comunicado.