Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *uses-permission android:name= "android.permission.WRITE_SMS"*
- public class SMSListActivity extends AppCompatActivity {
- public static final String LOGTAG = "Bogdan";
- ArrayList<SMSItem> SMSList = null;
- List<SMSItem> ItemsForAdapter = new ArrayList<SMSItem>();
- final static int TOPX = 1000;// максимум SMS которых нужно прочитать, После отладки убрать параметр.
- SMSInbox smsboxminer;// объект посредством которого осуществляется доступ к СМС
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- Context cont1;
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_sms_list);
- //Log.d(LOGTAG, "call onCreate(Bundle savedInstanceState) from class: " + this.getLocalClassName());
- toolbar = (Toolbar) findViewById(R.id.toolbar);
- setSupportActionBar(toolbar);
- toolbar.setTitle(getTitle());
- Apptitle = toolbar.getTitle().toString();
- buttdelsms = (Button) this.findViewById(R.id.ButtonDel);
- View.OnClickListener buttdelsmsonclicklistener = new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String txtTotost="";
- String SMSIDs ="";
- long SumtraceTime=0;
- int rowcount = 0;
- Iterator It = currentsellist.iterator();
- while (It.hasNext()) {
- int arrayID = (Integer) It.next();
- //запоминаем ID СМС которые будут удаляться, чтобы потом вывести результат.
- SMSIDs= SMSIDs+";"+SMSList.get(arrayID).getSMSID();
- txtTotost = txtTotost+SMSList.get(arrayID).getSMSID()+"|"+SMSList.get(arrayID).getphone()+"|"+SMSList.get(arrayID).getbody() +"n";
- /// Написать здесь код удаления СМС
- long start = System.nanoTime();
- /*
- Uri mUri = Uri.parse("content://sms/inbox"+"/"+SMSList.get(arrayID).getSMSID());
- Log.d(SMSListActivity.LOGTAG,"delete SMS whith URI="+mUri.getEncodedQuery()+"_id="+SMSList.get(arrayID).getSMSID());
- smsboxminer.mycontext.getContentResolver().delete(mUri, null, null);
- */
- rowcount=smsboxminer.removeSMS(SMSList.get(arrayID).getSMSID());// очень медленно работает. 1 смс - минута.
- //callresult=smsboxminer.removeSMS(5444);// очень медленно работает. 1 смс - минута.
- long end = System.nanoTime();
- long traceTime = end - start; //считаем сколько выполнялся метод
- SumtraceTime = SumtraceTime+traceTime;
- // Отладочная информация
- //Toast.makeText(v.getContext(),"I will be delete:"+ txtTotost+" checked SMS!",Toast.LENGTH_LONG).show();
- Log.d(SMSListActivity.LOGTAG, "SMSID:"+SMSList.get(arrayID).getSMSID() +" Time to execute removeSMS:"+
- (double) traceTime / 1000000000 + "s. Rowcount = "+rowcount);
- }
- Toast.makeText(v.getContext(),"SMS delete checked SMS:"+SMSIDs+" in "+(double) SumtraceTime / 1000000000 + "seconds.",Toast.LENGTH_LONG).show();
- buttdelsms.setEnabled(false);
- buttdelsms.setText("");
- // TODO не снимается галочка с чекбокса и не удаляется СМСка
- }
- };
- buttdelsms.setOnClickListener(buttdelsmsonclicklistener);
- minputSearch = (EditText) findViewById(R.id.inputSearch);
- buttonsearch = (Button) this.findViewById(R.id.ButtonSearch);
- currentsellist = new HashSet<Integer>();
- // Скрываем кнопку удаления до тех пор пока не отмечены элементы.
- buttdelsms.setEnabled(false);
- // fab идентификатор кнопки Email
- FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
- fab.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Snackbar.make(view, "Replace with your own action Действие", Snackbar.LENGTH_LONG)
- .setAction("Action", null).show();
- }
- });
- // Блок чтения и вывода SMS
- //final SMSInbox smsboxminer;// this передаем Actitvity с которым создаваемому классу нужно будет работать.
- cont1 = this.getApplicationContext();
- smsboxminer = new SMSInbox(cont1, "content://sms");
- // Cоздаем листенер для обработки нажатия чекбокса
- // не забыть привязать этот листенер к самому чекбоксу методом
- // {имя чекбокса}.setOnCheckedChangeListener(myCheckChangList);
- // по идее тут текста быть не дложно, но на всякий случай, чтоб не было ошибок
- // первичное наполнение списка смс. на старте
- if (minputSearch.getText().length() == 0) {
- SMSList = smsboxminer.getSMS(TOPX);
- toolbar.setTitle(R.string.app_name + "(" + SMSList.size() + ")");
- }
- View recyclerView = findViewById(R.id.sms_list);
- assert recyclerView != null;
- setupRecyclerView((RecyclerView) recyclerView);
- //Связываем данные массива с элементом ListView:
- if (findViewById(R.id.sms_detail_container) != null) {
- // The detail container view will be present only in the
- // large-screen layouts (res/values-w900dp).
- // If this view is present, then the
- // activity should be in two-pane mode.
- mTwoPane = true;
- }
- }
- public int removeSMS(int SMSID) {
- int rowcounts = 0;
- Uri mUri = Uri.parse(myUristr+"/"+SMSID);
- Log.d(SMSListActivity.LOGTAG,"delete SMS whith URI="+myUristr+"/"+SMSID);
- rowcounts = mycontext.getContentResolver().delete(mUri, null, null);
- //rowcounts = mycontext.getContentResolver().delete(mUri, null, null);
- return rowcounts;
- }
- 07-29 16:34:00.621 23251-23251/com.example.b_gorchinskiy.myapplication D/Bogdan: currentsellist size = 1
- 07-29 16:34:01.510 23251-23251/com.example.b_gorchinskiy.myapplication D/Bogdan: delete SMS whith URI=content://sms/2789
- 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