Skip to content

Instantly share code, notes, and snippets.

@jcroot
Created May 11, 2016 13:28
Show Gist options
  • Save jcroot/259e34c1445b525cd7185ab83955f833 to your computer and use it in GitHub Desktop.
Save jcroot/259e34c1445b525cd7185ab83955f833 to your computer and use it in GitHub Desktop.
MainActivity.java
package com.arrobasoft.claxoo.fragments;
import android.app.Activity;
import android.app.Fragment;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.telephony.SmsMessage;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.arrobasoft.claxoo.R;
import com.arrobasoft.claxoo.adapters.MessagesArrayAdapter;
import com.arrobasoft.claxoo.entities.SmsItem;
import com.arrobasoft.claxoo.services.Receivers.SmsReceiver;
import com.arrobasoft.claxoo.services.SmsService;
import com.arrobasoft.claxoo.utils.Constants;
import java.util.Collections;
import java.util.Comparator;
public class DashboardFragment extends Fragment implements SmsReceiver.SmsServiceEventsListener {
private static final String TAG = "DashboardFragment";
private SmsReceiver mReceiver;
private SmsService mService;
ArrayAdapter<SmsItem> smsItemsArrayAdapter;
private int mCount_Received;
private int mCount_Sent;
private int mCounter;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mCount_Received = 0;
mCount_Sent = 0;
this.mReceiver = new SmsReceiver(this);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(SmsReceiver.SmsServiceEventsListener.SMS_RECEIVED_ACTION);
intentFilter.addAction(SmsReceiver.SmsServiceEventsListener.SMS_REJECTED_ACTION);
intentFilter.addAction(SmsReceiver.SmsServiceEventsListener.SMS_DELIVER_ACTION);
intentFilter.setPriority(10000);
getActivity().registerReceiver(this.mReceiver, intentFilter);
mService = new SmsService(mHandler);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.dashboard_fragment, container, false);
smsItemsArrayAdapter = new MessagesArrayAdapter(getActivity(), R.layout.item_sms_item);
ListView listSmsView = (ListView)view.findViewById(R.id.listView);
if (smsItemsArrayAdapter != null && listSmsView != null){
listSmsView.setAdapter(smsItemsArrayAdapter);
}
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onSmsReceived(Bundle bundle) {
if (bundle != null){
mService.handler(bundle);
}
}
@Override
public void onSmsRejectedAction() {
}
@Override
public void onSmsDeliverAction(Bundle bundle) {
try {
if (bundle != null) {
final Object[] pdusObj = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdusObj.length; i++) {
SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
String phoneNumber = currentMessage.getDisplayOriginatingAddress();
String senderNum = phoneNumber;
String message = currentMessage.getDisplayMessageBody();
Log.i("SmsReceiver", "senderNum: " + senderNum + "; message: " + message);
} // end for loop
} // bundle is null
} catch (Exception e) {
Log.e(TAG, "Exception smsReceiver" +e);
}
}
private final Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case Constants.MESSAGE_RECEIVED:
if (smsItemsArrayAdapter != null){
SmsItem smsItem = new SmsItem();
smsItem.setIn_out(1);
smsItem.setCreated_at("2016-03-08");
smsItem.setMessage(msg.getData().getString(Constants.MESSAGE_DATA_RECEIVED));
smsItem.setCounter(mCounter++);
mCount_Received++;
TextView txt = (TextView)getView().findViewById(R.id.count_received);
txt.setText(String.valueOf(mCount_Received));
smsItemsArrayAdapter.add(smsItem);
}
break;
case Constants.MESSAGE_SENT:
if (smsItemsArrayAdapter != null){
SmsItem smsItem = new SmsItem();
smsItem.setIn_out(2);
smsItem.setCreated_at("2016-03-08");
smsItem.setMessage(msg.getData().getString(Constants.MESSAGE_DATA_SENT));
smsItem.setCounter(mCounter++);
mCount_Sent++;
TextView txt_sent = (TextView)getView().findViewById(R.id.count_sent);
txt_sent.setText(String.valueOf(mCount_Sent));
smsItemsArrayAdapter.add(smsItem);
}
break;
}
}
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment