Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class MainActivity extends Activity {
- Button btnSend;
- EditText tvMessage;
- EditText tvNumber;
- IntentFilter intentFilter;
- DBHelper dbHelper;
- private RecyclerView mRecyclerView;
- private RecyclerView.Adapter mAdapter;
- private LinearLayoutManager mLayoutManager;
- private static final String TAG="myLogs";
- public BroadcastReceiver intentReciever=new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- dbHelper = new DBHelper(context);
- SQLiteDatabase database = dbHelper.getWritableDatabase();
- String telephone = "";
- String kluch="";
- String metka="";
- int shit=0;
- Log.i(TAG, "test color");
- String[][] myDataset = getDataSet();
- mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
- // если мы уверены, что изменения в контенте не изменят размер layout-а RecyclerView
- // передаем параметр true - это увеличивает производительность
- // mRecyclerView.setHasFixedSize(true);
- // используем linear layout manager
- mLayoutManager = new LinearLayoutManager(context);
- mLayoutManager.setStackFromEnd(true);
- mRecyclerView.setLayoutManager(mLayoutManager);
- // создаем адаптер
- mAdapter = new RecyclerAdapter(myDataset);
- mRecyclerView.setAdapter(mAdapter);
- }
- };
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- intentFilter=new IntentFilter();
- intentFilter.addAction("SMS_RECEIVED_ACTION");
- btnSend=(Button)findViewById(R.id.btnSend);
- tvMessage=(EditText)findViewById(R.id.tvMessage);
- tvNumber=(EditText) findViewById(R.id.tvNumber);
- btnSend.setOnClickListener(mCorkyListener);
- String[][] myDataset = getDataSet();
- mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
- // если мы уверены, что изменения в контенте не изменят размер layout-а RecyclerView
- // передаем параметр true - это увеличивает производительность
- mRecyclerView.setHasFixedSize(true);
- // используем linear layout manager
- mLayoutManager = new LinearLayoutManager(this);
- mLayoutManager.setStackFromEnd(true);
- mRecyclerView.setLayoutManager(mLayoutManager);
- // создаем адаптер
- mAdapter = new RecyclerAdapter(myDataset);
- mRecyclerView.setAdapter(mAdapter);
- }
- private View.OnClickListener mCorkyListener = new View.OnClickListener() {
- public void onClick(View v) {
- String myMsg=tvMessage.getText().toString();
- String theNumber=tvNumber.getText().toString();
- sendMsg(theNumber, myMsg);
- SQLiteDatabase database = dbHelper.getWritableDatabase();
- ContentValues contentValues = new ContentValues();
- contentValues.put(DBHelper.KEY_PHONE, theNumber);
- contentValues.put(DBHelper.KEY_KLUCH, myMsg);
- contentValues.put(DBHelper.KEY_MARCER, "i");
- database.insert(DBHelper.TABLE_CONTACTS, null, contentValues);
- String[][] myDataset = getDataSet();
- mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
- // если мы уверены, что изменения в контенте не изменят размер layout-а RecyclerView
- // передаем параметр true - это увеличивает производительность
- // mRecyclerView.setHasFixedSize(true);
- // используем linear layout manager
- mLayoutManager = new LinearLayoutManager(getApplicationContext());
- mLayoutManager.setStackFromEnd(true);
- mRecyclerView.setLayoutManager(mLayoutManager);
- // создаем адаптер
- mAdapter = new RecyclerAdapter(myDataset);
- mRecyclerView.setAdapter(mAdapter);
- }};
- private void sendMsg(String theNumber, String myMsg) {
- String SENT="Message Sent";
- String DELIVERED="Message Delivered";
- PendingIntent sentPI=PendingIntent.getBroadcast(this, 0, new Intent(SENT),0);
- PendingIntent deliveredPI=PendingIntent.getBroadcast(this,0,new Intent(DELIVERED),0);
- //myMsg-сообщение на отправку
- android.telephony.SmsManager sms= android.telephony.SmsManager.getDefault();
- sms.sendTextMessage(theNumber, null, myMsg,sentPI,deliveredPI);
- }
- private String[][] getDataSet() {
- dbHelper = new DBHelper(this);
- SQLiteDatabase database = dbHelper.getWritableDatabase();
- int count=0;
- Cursor cursor = database.query(DBHelper.TABLE_CONTACTS, null, null, null, null, null, null);
- if (cursor.moveToFirst()) {
- int idIndex = cursor.getColumnIndex(DBHelper.KEY_ID);
- int phoneIndex = cursor.getColumnIndex(DBHelper.KEY_PHONE);
- int keyIndex = cursor.getColumnIndex(DBHelper.KEY_KLUCH);
- int metkaIndex = cursor.getColumnIndex(DBHelper.KEY_MARCER);
- do {
- count++;
- Log.i(TAG, "ID = " + cursor.getInt(idIndex) +
- ", phone = " + cursor.getString(phoneIndex) +
- ", key = " + cursor.getString(keyIndex)+
- ", metka = " + cursor.getString(metkaIndex));
- } while (cursor.moveToNext());
- } else
- Log.i(TAG,"0 rows");
- cursor.close();
- Log.i(TAG, "размер базы равен "+count);
- String [][] phone_key_metka=new String[count][3];
- String telephone = "";
- String kluch="";
- String metka="";
- int shit=0;
- try {
- Cursor cursorrrr = database.query(DBHelper.TABLE_CONTACTS, new String[] {"_id", DBHelper.KEY_PHONE}, null, new String[] {}, null, null, null);
- if (cursorrrr.moveToFirst()) {
- do {
- int phone = cursorrrr.getColumnIndex(DBHelper.KEY_PHONE);
- telephone=cursorrrr.getString(phone);
- Log.i(TAG,"______________ "+telephone);
- phone_key_metka[shit][0]=telephone;
- shit++;
- } while (cursorrrr.moveToNext());
- } else {
- Log.i(TAG,"0 rows");}
- shit=0;
- Cursor cursorrr = database.query(DBHelper.TABLE_CONTACTS, new String[] {"_id", DBHelper.KEY_KLUCH}, null, new String[] {}, null, null, null);
- if (cursorrr.moveToFirst()) {
- do {
- int key = cursorrr.getColumnIndex(DBHelper.KEY_KLUCH);
- kluch=cursorrr.getString(key);
- Log.i(TAG,"______________ "+kluch);
- phone_key_metka[shit][1]=kluch;
- shit++;
- } while (cursorrr.moveToNext());
- } else {
- Log.i(TAG,"0 rows");}
- shit=0;
- Cursor table = database.query(DBHelper.TABLE_CONTACTS, new String[] {"_id", DBHelper.KEY_MARCER}, null, new String[] {}, null, null, null);
- if (table.moveToFirst()) {
- do {
- int mera = table.getColumnIndex(DBHelper.KEY_MARCER);
- metka=table.getString(mera);
- Log.i(TAG,"______________ "+kluch);
- phone_key_metka[shit][2]=metka;
- shit++;
- } while (table.moveToNext());
- } else {
- Log.i(TAG,"0 rows");}
- } catch (Exception e) {
- Log.i(TAG, "ошибка обработки массива");
- }
- Log.i(TAG, telephone);
- Log.i(TAG, kluch);
- for(int i=0; i<phone_key_metka.length; i++){
- Log.i(TAG, "phone "+phone_key_metka[i][0]);
- Log.i(TAG, "message "+phone_key_metka[i][1]);
- Log.i(TAG, "metka "+phone_key_metka[i][2]);
- }
- String[][] mDataSet = new String[count][2];
- try {
- for (int i = 0; i < count; i++) {
- if (phone_key_metka[i][2].equals("me")){
- mDataSet[i][0] = phone_key_metka[i][0]+" "+phone_key_metka[i][1];
- mDataSet[i][1] = "";
- }else {
- if (phone_key_metka[i][2].equals("i")){
- mDataSet[i][0] ="";
- mDataSet[i][1] = phone_key_metka[i][0]+" "+phone_key_metka[i][1];
- } else{
- mDataSet[i][0] ="";
- mDataSet[i][1] = "";
- }
- }
- }
- } catch (Exception e) {
- Log.i(TAG, "ошибка вывода на экран");
- }
- return mDataSet;
- }
- @Override
- protected void onResume(){
- registerReceiver(intentReciever, intentFilter);
- super.onResume();
- }
- @Override
- protected void onPause(){
- unregisterReceiver(intentReciever);
- super.onPause();
- }
- }
- public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
- private String[][] mDataset;
- // класс view holder-а с помощью которого мы получаем ссылку на каждый элемент
- // отдельного пункта списка
- public static class ViewHolder extends RecyclerView.ViewHolder {
- // наш пункт состоит только из одного TextView
- public TextView leftView;
- public TextView rightView;
- public ViewHolder(View v) {
- super(v);
- leftView = (TextView) v.findViewById(R.id.leftSms);
- rightView=(TextView) v.findViewById(R.id.rightSms);
- }
- }
- // Конструктор
- public RecyclerAdapter(String[][] dataset) {
- mDataset = dataset;
- }
- // Создает новые views (вызывается layout manager-ом)
- @Override
- public RecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
- int viewType) {
- // create a new view
- View v = LayoutInflater.from(parent.getContext())
- .inflate(R.layout.recycler_item, parent, false);
- // тут можно программно менять атрибуты лэйаута (size, margins, paddings и др.)
- ViewHolder vh = new ViewHolder(v);
- return vh;
- }
- // Заменяет контент отдельного view (вызывается layout manager-ом)
- @Override
- public void onBindViewHolder(ViewHolder holder, int position) {
- holder.leftView.setText(mDataset[position][0]);
- holder.rightView.setText(mDataset[position][1]);
- }
- // Возвращает размер данных (вызывается layout manager-ом)
- @Override
- public int getItemCount() {
- return mDataset.length;
- }
- }
- public class MessageReceiver extends BroadcastReceiver {
- private static final String TAG="myLogs";
- private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
- DBHelper dbHelper;
- MainActivity mainActivity=new MainActivity();
- @Override
- public void onReceive(Context context, Intent intent) {
- dbHelper=new DBHelper(context);
- SQLiteDatabase database = dbHelper.getWritableDatabase();
- ContentValues contentValues = new ContentValues();
- Bundle bundle = intent.getExtras();
- SmsMessage[] messages;
- String str = "";
- if (bundle != null) {
- Object[] pdus = (Object[]) bundle.get("pdus");
- messages = new SmsMessage[pdus != null ? pdus.length : 0];
- String phone="";
- String message="";
- for (int i = 0; i < messages.length; i++) {
- messages[i] = SmsMessage.createFromPdu((byte[]) (pdus != null ? pdus[i] : null));
- //1-адресс приходс сообщения
- str += messages[i].getOriginatingAddress();
- str += ": ";
- //2-само сообщение
- str += messages[i].getMessageBody();
- str += "n";
- phone=messages[i].getOriginatingAddress();
- message=messages[i].getMessageBody();
- Cursor cur = database.query(DBHelper.TABLE_CONTACTS, new String[] {"_id", DBHelper.KEY_PHONE}, null, new String[] {}, null, null, null);
- boolean k=cur.moveToFirst();
- if (k==false) {
- Log.i(TAG, "база пуста");
- contentValues.put(DBHelper.KEY_PHONE, phone);
- contentValues.put(DBHelper.KEY_KLUCH, message);
- contentValues.put(DBHelper.KEY_MARCER, "me");
- database.insert(DBHelper.TABLE_CONTACTS, null, contentValues);
- Intent broadcastIntent = new Intent();
- broadcastIntent.setAction("SMS_RECEIVED_ACTION");
- broadcastIntent.putExtra("message", str);
- context.sendBroadcast(broadcastIntent);
- } else {
- Log.i(TAG, "базза не пуста");
- // database.delete(DBHelper.TABLE_CONTACTS, DBHelper.KEY_ID, null);
- contentValues.put(DBHelper.KEY_PHONE, phone);
- contentValues.put(DBHelper.KEY_KLUCH, message);
- contentValues.put(DBHelper.KEY_MARCER, "me");
- database.insert(DBHelper.TABLE_CONTACTS, null, contentValues);
- Intent broadcastIntent = new Intent();
- broadcastIntent.setAction("SMS_RECEIVED_ACTION");
- broadcastIntent.putExtra("message", str);
- context.sendBroadcast(broadcastIntent);
- }
- Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
- }
- abortBroadcast();
- }
- }
- }
Add Comment
Please, Sign In to add comment