package dk.thoerup.smssend; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; import java.util.ArrayList; import android.R.bool; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.provider.ContactsContract; import android.telephony.SmsManager; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.Toast; import android.widget.AdapterView.OnItemSelectedListener; public class SmsSend extends Activity { /** Called when the activity is first created. */ final int MAXCOUNT = 25; final String SMSDAEMON = "42407617"; final int OPTIONS_SETTINGS = 1000; final int LOOKUP_PHONENR = 2000; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button select = (Button) findViewById(R.id.selectNumber); select.setOnClickListener( selectListener ); Button send = (Button) findViewById(R.id.send); send.setOnClickListener(sendListener); Spinner method = (Spinner) findViewById(R.id.method); ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.methods, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); method.setOnItemSelectedListener(methodSelected); method.setAdapter(adapter); method.setSelection(0); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuItem item; item = menu.add(0, OPTIONS_SETTINGS, 0, "Settings"); item.setIcon(android.R.drawable.ic_menu_edit); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { boolean retval = true; //TODO: Cleanup switch (item.getItemId()) { case OPTIONS_SETTINGS: Intent i = new Intent(this, dk.thoerup.smssend.SmsConfig.class); startActivity(i); break; default: retval = super.onOptionsItemSelected(item); } return retval; } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch(requestCode) { case LOOKUP_PHONENR: if (resultCode == Activity.RESULT_OK) { String phone = data.getStringExtra("phone"); EditText dest = (EditText) findViewById(R.id.destination); dest.setText(phone); } break; } } void lookup() { Intent intent = new Intent(Intent.ACTION_PICK); intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); startActivityForResult(intent, LOOKUP_PHONENR); /* Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); while (cursor.moveToNext()) { String contactId = cursor.getString(cursor.getColumnIndex( ContactsContract.Contacts._ID)); String hasPhone = cursor.getString(cursor.getColumnIndex( ContactsContract.Contacts.HAS_PHONE_NUMBER)); String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); Log.v("contact", name + " : " + hasPhone); if (Integer.parseInt(hasPhone) > 0) { // You know have the number so now query it like this Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null); while (phones.moveToNext()) { int phoneIdx = phones.getColumnIndex( ContactsContract.CommonDataKinds.Phone.NUMBER); String phoneNumber = phones.getString( phoneIdx ); Log.v("phone", phoneNumber); } phones.close(); } } cursor.close(); */ } OnClickListener selectListener = new OnClickListener() { @Override public void onClick(View v) { lookup(); } }; OnClickListener sendListener = new OnClickListener() { @Override public void onClick(View v) { Spinner method = (Spinner) findViewById(R.id.method); int sel = method.getSelectedItemPosition(); boolean ret = false; switch (sel) { case 0: ret = sendInternal(); break; case 1: ret = sendCoolSms(); break; case 2: ret = sendSmsDaemon(); break; } String msg = "Done!"; if (ret == false) msg = "failed!"; Toast.makeText(SmsSend.this, msg, Toast.LENGTH_LONG).show(); } }; int getCount() { EditText countView = (EditText) findViewById(R.id.count); String strCount = countView.getText().toString(); int count = Integer.parseInt(strCount); return Math.min(count, MAXCOUNT); //limit to MAXCOUNT } int getInterval() { EditText intView = (EditText) findViewById(R.id.interval); String strInt = intView.getText().toString(); return Integer.parseInt(strInt); } String getFrom() { EditText origin = (EditText) findViewById(R.id.origin); return origin.getText().toString().trim(); } String getTo() { EditText destination = (EditText) findViewById(R.id.destination); String to = destination.getText().toString().trim(); to = to.replace("+", ""); if (to.length() < 10) { to = "45" + to; } return to; } String getMessage() { EditText message = (EditText) findViewById(R.id.message); return message.getText().toString().trim(); } boolean sendInternal() { int count = getCount(); String to = getTo(); SmsManager sms = SmsManager.getDefault(); ArrayList parts = sms.divideMessage(getMessage() ); for (int i=0; i parts = sms.divideMessage(msg); sms.sendMultipartTextMessage(SMSDAEMON, null, parts, null, null); return true; } OnItemSelectedListener methodSelected = new OnItemSelectedListener() { public void onItemSelected(AdapterView parent, View view, int pos, long id) { switch (pos) { case 0: findViewById(R.id.interval).setEnabled(false); findViewById(R.id.origin).setEnabled(false); findViewById(R.id.count).setEnabled(true); break; case 1: findViewById(R.id.interval).setEnabled(false); findViewById(R.id.origin).setEnabled(true); findViewById(R.id.count).setEnabled(false); break; case 2: findViewById(R.id.interval).setEnabled(true); findViewById(R.id.origin).setEnabled(false); findViewById(R.id.count).setEnabled(true); break; } } @Override public void onNothingSelected(AdapterView arg0) { } }; }