Advertisement
Guest User

Untitled

a guest
Jul 29th, 2016
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.51 KB | None | 0 0
  1. *uses-permission android:name= "android.permission.WRITE_SMS"*
  2.  
  3. public class SMSListActivity extends AppCompatActivity {
  4. public static final String LOGTAG = "Bogdan";
  5. ArrayList<SMSItem> SMSList = null;
  6. List<SMSItem> ItemsForAdapter = new ArrayList<SMSItem>();
  7. final static int TOPX = 1000;// максимум SMS которых нужно прочитать, После отладки убрать параметр.
  8. SMSInbox smsboxminer;// объект посредством которого осуществляется доступ к СМС
  9.  
  10. @Override
  11. protected void onCreate(Bundle savedInstanceState) {
  12. Context cont1;
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.activity_sms_list);
  15. //Log.d(LOGTAG, "call onCreate(Bundle savedInstanceState) from class: " + this.getLocalClassName());
  16. toolbar = (Toolbar) findViewById(R.id.toolbar);
  17. setSupportActionBar(toolbar);
  18. toolbar.setTitle(getTitle());
  19. Apptitle = toolbar.getTitle().toString();
  20. buttdelsms = (Button) this.findViewById(R.id.ButtonDel);
  21.  
  22. View.OnClickListener buttdelsmsonclicklistener = new View.OnClickListener() {
  23. @Override
  24. public void onClick(View v) {
  25. String txtTotost="";
  26. String SMSIDs ="";
  27. long SumtraceTime=0;
  28. int rowcount = 0;
  29.  
  30. Iterator It = currentsellist.iterator();
  31. while (It.hasNext()) {
  32. int arrayID = (Integer) It.next();
  33. //запоминаем ID СМС которые будут удаляться, чтобы потом вывести результат.
  34. SMSIDs= SMSIDs+";"+SMSList.get(arrayID).getSMSID();
  35. txtTotost = txtTotost+SMSList.get(arrayID).getSMSID()+"|"+SMSList.get(arrayID).getphone()+"|"+SMSList.get(arrayID).getbody() +"n";
  36. /// Написать здесь код удаления СМС
  37. long start = System.nanoTime();
  38. /*
  39. Uri mUri = Uri.parse("content://sms/inbox"+"/"+SMSList.get(arrayID).getSMSID());
  40. Log.d(SMSListActivity.LOGTAG,"delete SMS whith URI="+mUri.getEncodedQuery()+"_id="+SMSList.get(arrayID).getSMSID());
  41. smsboxminer.mycontext.getContentResolver().delete(mUri, null, null);
  42. */
  43.  
  44. rowcount=smsboxminer.removeSMS(SMSList.get(arrayID).getSMSID());// очень медленно работает. 1 смс - минута.
  45. //callresult=smsboxminer.removeSMS(5444);// очень медленно работает. 1 смс - минута.
  46. long end = System.nanoTime();
  47. long traceTime = end - start; //считаем сколько выполнялся метод
  48. SumtraceTime = SumtraceTime+traceTime;
  49. // Отладочная информация
  50. //Toast.makeText(v.getContext(),"I will be delete:"+ txtTotost+" checked SMS!",Toast.LENGTH_LONG).show();
  51. Log.d(SMSListActivity.LOGTAG, "SMSID:"+SMSList.get(arrayID).getSMSID() +" Time to execute removeSMS:"+
  52. (double) traceTime / 1000000000 + "s. Rowcount = "+rowcount);
  53. }
  54. Toast.makeText(v.getContext(),"SMS delete checked SMS:"+SMSIDs+" in "+(double) SumtraceTime / 1000000000 + "seconds.",Toast.LENGTH_LONG).show();
  55. buttdelsms.setEnabled(false);
  56. buttdelsms.setText("");
  57. // TODO не снимается галочка с чекбокса и не удаляется СМСка
  58. }
  59. };
  60. buttdelsms.setOnClickListener(buttdelsmsonclicklistener);
  61.  
  62. minputSearch = (EditText) findViewById(R.id.inputSearch);
  63. buttonsearch = (Button) this.findViewById(R.id.ButtonSearch);
  64. currentsellist = new HashSet<Integer>();
  65. // Скрываем кнопку удаления до тех пор пока не отмечены элементы.
  66. buttdelsms.setEnabled(false);
  67. // fab идентификатор кнопки Email
  68. FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
  69. fab.setOnClickListener(new View.OnClickListener() {
  70. @Override
  71. public void onClick(View view) {
  72. Snackbar.make(view, "Replace with your own action Действие", Snackbar.LENGTH_LONG)
  73. .setAction("Action", null).show();
  74.  
  75.  
  76. }
  77. });
  78.  
  79.  
  80. // Блок чтения и вывода SMS
  81. //final SMSInbox smsboxminer;// this передаем Actitvity с которым создаваемому классу нужно будет работать.
  82. cont1 = this.getApplicationContext();
  83. smsboxminer = new SMSInbox(cont1, "content://sms");
  84. // Cоздаем листенер для обработки нажатия чекбокса
  85. // не забыть привязать этот листенер к самому чекбоксу методом
  86. // {имя чекбокса}.setOnCheckedChangeListener(myCheckChangList);
  87. // по идее тут текста быть не дложно, но на всякий случай, чтоб не было ошибок
  88.  
  89. // первичное наполнение списка смс. на старте
  90. if (minputSearch.getText().length() == 0) {
  91. SMSList = smsboxminer.getSMS(TOPX);
  92. toolbar.setTitle(R.string.app_name + "(" + SMSList.size() + ")");
  93. }
  94.  
  95. View recyclerView = findViewById(R.id.sms_list);
  96. assert recyclerView != null;
  97. setupRecyclerView((RecyclerView) recyclerView);
  98.  
  99.  
  100. //Связываем данные массива с элементом ListView:
  101.  
  102. if (findViewById(R.id.sms_detail_container) != null) {
  103. // The detail container view will be present only in the
  104. // large-screen layouts (res/values-w900dp).
  105. // If this view is present, then the
  106. // activity should be in two-pane mode.
  107. mTwoPane = true;
  108. }
  109.  
  110. }
  111.  
  112. public int removeSMS(int SMSID) {
  113. int rowcounts = 0;
  114. Uri mUri = Uri.parse(myUristr+"/"+SMSID);
  115. Log.d(SMSListActivity.LOGTAG,"delete SMS whith URI="+myUristr+"/"+SMSID);
  116.  
  117. rowcounts = mycontext.getContentResolver().delete(mUri, null, null);
  118. //rowcounts = mycontext.getContentResolver().delete(mUri, null, null);
  119. return rowcounts;
  120. }
  121.  
  122. 07-29 16:34:00.621 23251-23251/com.example.b_gorchinskiy.myapplication D/Bogdan: currentsellist size = 1
  123. 07-29 16:34:01.510 23251-23251/com.example.b_gorchinskiy.myapplication D/Bogdan: delete SMS whith URI=content://sms/2789
  124. 07-29 16:34:02.041 23251-23251/com.example.b_gorchinskiy.myapplication D/Bogdan: SMSID:2789 Time to execute removeSMS:0.528256s. Rowcount = 1*
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement