Android Open Source - LheidoSMS-old Sms Receiver






From Project

Back to project page LheidoSMS-old.

License

The source code is released under:

GNU General Public License

If you think the Android project LheidoSMS-old listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.lheido.sms;
//  ww  w  .j  a va 2 s .co  m
import android.app.Activity;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.os.Vibrator;
import android.preference.PreferenceManager;
import android.support.v4.app.NotificationCompat;
import android.telephony.SmsMessage;
import android.widget.Toast;

import com.lheido.sms.LheidoContact;

public class SmsReceiver extends BroadcastReceiver {
  private static final String ARG_SMS_DELIVERED = "new_sms_delivered";
  private final String ACTION_RECEIVE_SMS = "android.provider.Telephony.SMS_RECEIVED";
  private final String ACTION_SENT_SMS = "com.lheido.sms.sent";
  private final String ACTION_DELIVERED_SMS = "com.lheido.sms.delivered";
  private Context mcontext;
  
  
  @Override
  public void onReceive(Context context, Intent intent) {
    mcontext = context;
    SharedPreferences userPref = PreferenceManager.getDefaultSharedPreferences(mcontext);
    boolean activ_notif = userPref.getBoolean("notif", true);
    boolean vibrate = userPref.getBoolean("vibration", true);
    Vibrator v = (Vibrator) mcontext.getSystemService(Context.VIBRATOR_SERVICE);
    String iAction = intent.getAction();
    if(iAction.equals(ACTION_RECEIVE_SMS)){
      LheidoContact contact = new LheidoContact();
      Bundle bundle = intent.getExtras();
      if(bundle != null){
        Object[] pdus = (Object[]) bundle.get("pdus");
        final SmsMessage[] messages = new SmsMessage[pdus.length];
        for(int i = 0; i<pdus.length; i++){
          messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
        }
        if(messages.length > -1){
          final String body = messages[0].getMessageBody();
          final String phone = messages[0].getDisplayOriginatingAddress();
          final String name = contact.getContactName(context, phone);
          Toast.makeText(context, "Sms reu de " + name, Toast.LENGTH_LONG).show();
          if(activ_notif){
            Intent notificationIntent = new Intent(context, MainActivity.class);
            PendingIntent pIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
            // Create Notification using NotificationCompat.Builder
            NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
              // Set Icon
              .setSmallIcon(R.drawable.ic_launcher)
              // Set Ticker Message
              .setTicker(body)
              // Set Title
              .setContentTitle(""+name)
              // Set Text
              .setContentText(body)
              // Add an Action Button below Notification
              //.addAction(R.drawable.ic_launcher, "Ouvrir la conversation", pIntent)
              // Set PendingIntent into Notification
              .setContentIntent(pIntent)
              // Dismiss Notification
              .setAutoCancel(true);

            // Create Notification Manager
            NotificationManager notificationmanager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
            // Build Notification with Notification Manager
            notificationmanager.notify(0, builder.build());
            if(vibrate) v.vibrate(1000);
          }
        } 
      }
    }
    else if(iAction.equals(ACTION_DELIVERED_SMS)){
      switch(getResultCode()){
        case Activity.RESULT_OK:
          Toast.makeText(context, "Message remis" , Toast.LENGTH_SHORT).show();
          long _id = intent.getExtras().getLong(ARG_SMS_DELIVERED, -1);
          if(_id != -1){
            ContentValues values = new ContentValues();
                values.put("status", 0);
            try{
                  context.getContentResolver().update(Uri.parse("content://sms/"+_id), values, null, null);
                }catch (Exception ex){
                  Toast.makeText(context, ex.toString(), Toast.LENGTH_LONG).show();
                }
          }
          boolean vibrate_delivered = userPref.getBoolean("delivered_vibration", true);
          if(vibrate_delivered){
            long[] pattern = {
                0,  // Start immediately
                100,100,100,100,100,100,100
            };
            v.vibrate(pattern, -1);
          }
          break;
        default:
          Toast.makeText(context, "Erreur, message non remis", Toast.LENGTH_SHORT).show();
          if(vibrate) v.vibrate(2000);
          break;
      }
    }
    else if(iAction.equals(ACTION_SENT_SMS)){
      switch(getResultCode()){
        case Activity.RESULT_OK:
          //Toast.makeText(context, "Le message a certainement d tre envoy  quelqu'un..." , Toast.LENGTH_SHORT).show();
          //v.vibrate(1000);
          break;
        default:
          Toast.makeText(context, "Erreur, le message n'a pas tait envoy", Toast.LENGTH_SHORT).show();
          if(vibrate) v.vibrate(2000);
          break;
      }
    }
  }
  
}




Java Source Code List

com.lheido.sms.ConversationAdapter.java
com.lheido.sms.ConversationMMSAdapter.java
com.lheido.sms.LheidoContact.java
com.lheido.sms.LheidoSMSFragBase.java
com.lheido.sms.LheidoSmsPreferenceActivity.java
com.lheido.sms.LheidoUtils.java
com.lheido.sms.ListeConversationsAdapter.java
com.lheido.sms.MMSFrag.java
com.lheido.sms.MainActivity.java
com.lheido.sms.Message.java
com.lheido.sms.SMSFrag.java
com.lheido.sms.SmsReceiver.java
com.lheido.sms.ViewPagerAdapter.java