Hi Guys! I have the following problem:
The user, who is using the app. should be able to define when he wants to send his or her SMS. Therefore I have a textfield, where the user can define when to send the next SMS ( in minutes! ). Now my problem is that I have two buttons: SMS send and Cancel . When the user presses the SMS send button an SMS should be sent and this SMS should be sent every x minutes ( the minutes the user has already defined in the textfield ). But the Cancel button should cancel this process and here is my problem: As soon as the user presses SMS send the Ui hangs and the user is not able to press the cancel button anymore. I know I can solve the problem with a Thread or maybe with the "doInBackground" method but I am not sure whether I am on the right track! Can anyone help me please, I am not sure whether I am right! Thank you very much! Here is my code: package com.example.smsmessageregulary; import android.app.Activity; import android.app.PendingIntent; import android.content.ContentResolver; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.provider.Contacts; import android.provider.ContactsContract; import android.telephony.gsm.SmsManager; import android.view.View; import android.widget.Button; import android.widget.EditText; public class SMSRegulary extends Activity { Button btnSendSMS, PhonePicker; EditText txtPhoneNo; EditText txtMessage; EditText txtCounter; int counter = 0; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_smsregulary); btnSendSMS = (Button) findViewById(R.id.btnSendSMS); txtPhoneNo = (EditText) findViewById(R.id.txtPhoneNo); txtMessage = (EditText) findViewById(R.id.txtMessage); txtCounter = (EditText) findViewById(R.id.txtCounter); PhonePicker = (Button) findViewById(R.id.picker); PhonePicker.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub ContentResolver cr = getContentResolver(); Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); if (cur.getCount() > 0) { while (cur.moveToNext()) { String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); System.out.println(name); if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { //Query phone here. Covered next System.out.println("HERE"); } } } } }); btnSendSMS.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String phoneNo = txtPhoneNo.getText().toString(); String message = txtMessage.getText().toString(); String Repeater = txtCounter.getText().toString(); Repeater = Repeater + "000"; Integer r = Integer.valueOf(Repeater); long l = r.longValue(); if (phoneNo.length()>0 && message.length()>0 && Repeater.length() == 0) sendSMS(phoneNo, message); else { while ( counter <= 99 ) { sendSMS(phoneNo, message); try { Thread.sleep(l); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }); } //---sends an SMS message to another device--- private void sendSMS(String phoneNumber, String message) { PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this, SMSRegulary.class), 0); SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(phoneNumber, null, message, pi, null); } } -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en