Guest User

Untitled

a guest
Mar 22nd, 2018
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.35 KB | None | 0 0
  1. public class MainActivity extends Activity {
  2. Button btnSend;
  3. EditText tvMessage;
  4. EditText tvNumber;
  5. IntentFilter intentFilter;
  6. DBHelper dbHelper;
  7. private RecyclerView mRecyclerView;
  8. private RecyclerView.Adapter mAdapter;
  9. private LinearLayoutManager mLayoutManager;
  10.  
  11. private static final String TAG="myLogs";
  12.  
  13. public BroadcastReceiver intentReciever=new BroadcastReceiver() {
  14. @Override
  15. public void onReceive(Context context, Intent intent) {
  16. dbHelper = new DBHelper(context);
  17. SQLiteDatabase database = dbHelper.getWritableDatabase();
  18. String telephone = "";
  19. String kluch="";
  20. String metka="";
  21. int shit=0;
  22.  
  23.  
  24. Log.i(TAG, "test color");
  25. String[][] myDataset = getDataSet();
  26. mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
  27. // если мы уверены, что изменения в контенте не изменят размер layout-а RecyclerView
  28. // передаем параметр true - это увеличивает производительность
  29. // mRecyclerView.setHasFixedSize(true);
  30.  
  31. // используем linear layout manager
  32. mLayoutManager = new LinearLayoutManager(context);
  33. mLayoutManager.setStackFromEnd(true);
  34. mRecyclerView.setLayoutManager(mLayoutManager);
  35. // создаем адаптер
  36. mAdapter = new RecyclerAdapter(myDataset);
  37. mRecyclerView.setAdapter(mAdapter);
  38.  
  39.  
  40. }
  41. };
  42.  
  43. /** Called when the activity is first created. */
  44. @Override
  45. public void onCreate(Bundle savedInstanceState) {
  46. super.onCreate(savedInstanceState);
  47. setContentView(R.layout.activity_main);
  48. intentFilter=new IntentFilter();
  49. intentFilter.addAction("SMS_RECEIVED_ACTION");
  50.  
  51. btnSend=(Button)findViewById(R.id.btnSend);
  52. tvMessage=(EditText)findViewById(R.id.tvMessage);
  53. tvNumber=(EditText) findViewById(R.id.tvNumber);
  54.  
  55. btnSend.setOnClickListener(mCorkyListener);
  56.  
  57.  
  58. String[][] myDataset = getDataSet();
  59. mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
  60. // если мы уверены, что изменения в контенте не изменят размер layout-а RecyclerView
  61. // передаем параметр true - это увеличивает производительность
  62. mRecyclerView.setHasFixedSize(true);
  63. // используем linear layout manager
  64. mLayoutManager = new LinearLayoutManager(this);
  65. mLayoutManager.setStackFromEnd(true);
  66. mRecyclerView.setLayoutManager(mLayoutManager);
  67. // создаем адаптер
  68. mAdapter = new RecyclerAdapter(myDataset);
  69. mRecyclerView.setAdapter(mAdapter);
  70.  
  71. }
  72. private View.OnClickListener mCorkyListener = new View.OnClickListener() {
  73. public void onClick(View v) {
  74. String myMsg=tvMessage.getText().toString();
  75. String theNumber=tvNumber.getText().toString();
  76. sendMsg(theNumber, myMsg);
  77.  
  78. SQLiteDatabase database = dbHelper.getWritableDatabase();
  79. ContentValues contentValues = new ContentValues();
  80. contentValues.put(DBHelper.KEY_PHONE, theNumber);
  81. contentValues.put(DBHelper.KEY_KLUCH, myMsg);
  82. contentValues.put(DBHelper.KEY_MARCER, "i");
  83. database.insert(DBHelper.TABLE_CONTACTS, null, contentValues);
  84.  
  85.  
  86. String[][] myDataset = getDataSet();
  87.  
  88. mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
  89. // если мы уверены, что изменения в контенте не изменят размер layout-а RecyclerView
  90. // передаем параметр true - это увеличивает производительность
  91. // mRecyclerView.setHasFixedSize(true);
  92.  
  93. // используем linear layout manager
  94. mLayoutManager = new LinearLayoutManager(getApplicationContext());
  95. mLayoutManager.setStackFromEnd(true);
  96. mRecyclerView.setLayoutManager(mLayoutManager);
  97. // создаем адаптер
  98. mAdapter = new RecyclerAdapter(myDataset);
  99. mRecyclerView.setAdapter(mAdapter);
  100.  
  101. }};
  102.  
  103. private void sendMsg(String theNumber, String myMsg) {
  104. String SENT="Message Sent";
  105. String DELIVERED="Message Delivered";
  106.  
  107. PendingIntent sentPI=PendingIntent.getBroadcast(this, 0, new Intent(SENT),0);
  108. PendingIntent deliveredPI=PendingIntent.getBroadcast(this,0,new Intent(DELIVERED),0);
  109.  
  110. //myMsg-сообщение на отправку
  111.  
  112. android.telephony.SmsManager sms= android.telephony.SmsManager.getDefault();
  113. sms.sendTextMessage(theNumber, null, myMsg,sentPI,deliveredPI);
  114.  
  115.  
  116. }
  117.  
  118.  
  119. private String[][] getDataSet() {
  120. dbHelper = new DBHelper(this);
  121. SQLiteDatabase database = dbHelper.getWritableDatabase();
  122. int count=0;
  123. Cursor cursor = database.query(DBHelper.TABLE_CONTACTS, null, null, null, null, null, null);
  124. if (cursor.moveToFirst()) {
  125.  
  126. int idIndex = cursor.getColumnIndex(DBHelper.KEY_ID);
  127. int phoneIndex = cursor.getColumnIndex(DBHelper.KEY_PHONE);
  128. int keyIndex = cursor.getColumnIndex(DBHelper.KEY_KLUCH);
  129. int metkaIndex = cursor.getColumnIndex(DBHelper.KEY_MARCER);
  130. do {
  131. count++;
  132. Log.i(TAG, "ID = " + cursor.getInt(idIndex) +
  133. ", phone = " + cursor.getString(phoneIndex) +
  134. ", key = " + cursor.getString(keyIndex)+
  135. ", metka = " + cursor.getString(metkaIndex));
  136. } while (cursor.moveToNext());
  137. } else
  138. Log.i(TAG,"0 rows");
  139. cursor.close();
  140.  
  141. Log.i(TAG, "размер базы равен "+count);
  142.  
  143. String [][] phone_key_metka=new String[count][3];
  144.  
  145. String telephone = "";
  146. String kluch="";
  147. String metka="";
  148. int shit=0;
  149. try {
  150. Cursor cursorrrr = database.query(DBHelper.TABLE_CONTACTS, new String[] {"_id", DBHelper.KEY_PHONE}, null, new String[] {}, null, null, null);
  151.  
  152. if (cursorrrr.moveToFirst()) {
  153. do {
  154. int phone = cursorrrr.getColumnIndex(DBHelper.KEY_PHONE);
  155. telephone=cursorrrr.getString(phone);
  156. Log.i(TAG,"______________ "+telephone);
  157. phone_key_metka[shit][0]=telephone;
  158. shit++;
  159. } while (cursorrrr.moveToNext());
  160. } else {
  161. Log.i(TAG,"0 rows");}
  162.  
  163. shit=0;
  164.  
  165. Cursor cursorrr = database.query(DBHelper.TABLE_CONTACTS, new String[] {"_id", DBHelper.KEY_KLUCH}, null, new String[] {}, null, null, null);
  166. if (cursorrr.moveToFirst()) {
  167. do {
  168. int key = cursorrr.getColumnIndex(DBHelper.KEY_KLUCH);
  169. kluch=cursorrr.getString(key);
  170. Log.i(TAG,"______________ "+kluch);
  171. phone_key_metka[shit][1]=kluch;
  172. shit++;
  173. } while (cursorrr.moveToNext());
  174. } else {
  175. Log.i(TAG,"0 rows");}
  176.  
  177. shit=0;
  178.  
  179. Cursor table = database.query(DBHelper.TABLE_CONTACTS, new String[] {"_id", DBHelper.KEY_MARCER}, null, new String[] {}, null, null, null);
  180. if (table.moveToFirst()) {
  181. do {
  182. int mera = table.getColumnIndex(DBHelper.KEY_MARCER);
  183. metka=table.getString(mera);
  184. Log.i(TAG,"______________ "+kluch);
  185. phone_key_metka[shit][2]=metka;
  186. shit++;
  187. } while (table.moveToNext());
  188. } else {
  189. Log.i(TAG,"0 rows");}
  190.  
  191.  
  192. } catch (Exception e) {
  193. Log.i(TAG, "ошибка обработки массива");
  194. }
  195.  
  196.  
  197. Log.i(TAG, telephone);
  198. Log.i(TAG, kluch);
  199.  
  200. for(int i=0; i<phone_key_metka.length; i++){
  201. Log.i(TAG, "phone "+phone_key_metka[i][0]);
  202. Log.i(TAG, "message "+phone_key_metka[i][1]);
  203. Log.i(TAG, "metka "+phone_key_metka[i][2]);
  204. }
  205.  
  206. String[][] mDataSet = new String[count][2];
  207. try {
  208. for (int i = 0; i < count; i++) {
  209. if (phone_key_metka[i][2].equals("me")){
  210. mDataSet[i][0] = phone_key_metka[i][0]+" "+phone_key_metka[i][1];
  211. mDataSet[i][1] = "";
  212. }else {
  213. if (phone_key_metka[i][2].equals("i")){
  214. mDataSet[i][0] ="";
  215. mDataSet[i][1] = phone_key_metka[i][0]+" "+phone_key_metka[i][1];
  216. } else{
  217. mDataSet[i][0] ="";
  218. mDataSet[i][1] = "";
  219. }
  220. }
  221.  
  222. }
  223. } catch (Exception e) {
  224. Log.i(TAG, "ошибка вывода на экран");
  225. }
  226. return mDataSet;
  227. }
  228.  
  229.  
  230. @Override
  231. protected void onResume(){
  232. registerReceiver(intentReciever, intentFilter);
  233. super.onResume();
  234. }
  235. @Override
  236. protected void onPause(){
  237. unregisterReceiver(intentReciever);
  238. super.onPause();
  239. }
  240.  
  241. }
  242.  
  243. public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
  244.  
  245. private String[][] mDataset;
  246.  
  247. // класс view holder-а с помощью которого мы получаем ссылку на каждый элемент
  248. // отдельного пункта списка
  249. public static class ViewHolder extends RecyclerView.ViewHolder {
  250. // наш пункт состоит только из одного TextView
  251. public TextView leftView;
  252. public TextView rightView;
  253.  
  254. public ViewHolder(View v) {
  255. super(v);
  256. leftView = (TextView) v.findViewById(R.id.leftSms);
  257. rightView=(TextView) v.findViewById(R.id.rightSms);
  258. }
  259. }
  260.  
  261. // Конструктор
  262. public RecyclerAdapter(String[][] dataset) {
  263.  
  264. mDataset = dataset;
  265. }
  266.  
  267. // Создает новые views (вызывается layout manager-ом)
  268. @Override
  269. public RecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
  270. int viewType) {
  271. // create a new view
  272. View v = LayoutInflater.from(parent.getContext())
  273. .inflate(R.layout.recycler_item, parent, false);
  274.  
  275. // тут можно программно менять атрибуты лэйаута (size, margins, paddings и др.)
  276.  
  277. ViewHolder vh = new ViewHolder(v);
  278. return vh;
  279. }
  280.  
  281. // Заменяет контент отдельного view (вызывается layout manager-ом)
  282. @Override
  283. public void onBindViewHolder(ViewHolder holder, int position) {
  284.  
  285. holder.leftView.setText(mDataset[position][0]);
  286. holder.rightView.setText(mDataset[position][1]);
  287.  
  288. }
  289.  
  290. // Возвращает размер данных (вызывается layout manager-ом)
  291. @Override
  292. public int getItemCount() {
  293. return mDataset.length;
  294. }
  295. }
  296.  
  297. public class MessageReceiver extends BroadcastReceiver {
  298. private static final String TAG="myLogs";
  299. private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
  300. DBHelper dbHelper;
  301. MainActivity mainActivity=new MainActivity();
  302.  
  303.  
  304. @Override
  305. public void onReceive(Context context, Intent intent) {
  306. dbHelper=new DBHelper(context);
  307. SQLiteDatabase database = dbHelper.getWritableDatabase();
  308. ContentValues contentValues = new ContentValues();
  309. Bundle bundle = intent.getExtras();
  310. SmsMessage[] messages;
  311. String str = "";
  312. if (bundle != null) {
  313. Object[] pdus = (Object[]) bundle.get("pdus");
  314. messages = new SmsMessage[pdus != null ? pdus.length : 0];
  315. String phone="";
  316. String message="";
  317. for (int i = 0; i < messages.length; i++) {
  318. messages[i] = SmsMessage.createFromPdu((byte[]) (pdus != null ? pdus[i] : null));
  319. //1-адресс приходс сообщения
  320. str += messages[i].getOriginatingAddress();
  321. str += ": ";
  322. //2-само сообщение
  323. str += messages[i].getMessageBody();
  324. str += "n";
  325.  
  326. phone=messages[i].getOriginatingAddress();
  327. message=messages[i].getMessageBody();
  328. Cursor cur = database.query(DBHelper.TABLE_CONTACTS, new String[] {"_id", DBHelper.KEY_PHONE}, null, new String[] {}, null, null, null);
  329. boolean k=cur.moveToFirst();
  330.  
  331. if (k==false) {
  332. Log.i(TAG, "база пуста");
  333.  
  334. contentValues.put(DBHelper.KEY_PHONE, phone);
  335. contentValues.put(DBHelper.KEY_KLUCH, message);
  336. contentValues.put(DBHelper.KEY_MARCER, "me");
  337. database.insert(DBHelper.TABLE_CONTACTS, null, contentValues);
  338.  
  339.  
  340.  
  341. Intent broadcastIntent = new Intent();
  342. broadcastIntent.setAction("SMS_RECEIVED_ACTION");
  343. broadcastIntent.putExtra("message", str);
  344. context.sendBroadcast(broadcastIntent);
  345. } else {
  346. Log.i(TAG, "базза не пуста");
  347. // database.delete(DBHelper.TABLE_CONTACTS, DBHelper.KEY_ID, null);
  348. contentValues.put(DBHelper.KEY_PHONE, phone);
  349. contentValues.put(DBHelper.KEY_KLUCH, message);
  350. contentValues.put(DBHelper.KEY_MARCER, "me");
  351. database.insert(DBHelper.TABLE_CONTACTS, null, contentValues);
  352.  
  353.  
  354.  
  355. Intent broadcastIntent = new Intent();
  356. broadcastIntent.setAction("SMS_RECEIVED_ACTION");
  357. broadcastIntent.putExtra("message", str);
  358. context.sendBroadcast(broadcastIntent);
  359. }
  360.  
  361. Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
  362.  
  363. }
  364. abortBroadcast();
  365.  
  366. }
  367. }
  368. }
Add Comment
Please, Sign In to add comment