/[projects]/android/SmsSend/src/dk/thoerup/smssend/SmsSend.java
ViewVC logotype

Contents of /android/SmsSend/src/dk/thoerup/smssend/SmsSend.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 745 - (show annotations) (download)
Tue May 25 13:54:28 2010 UTC (13 years, 11 months ago) by torben
File size: 8067 byte(s)
import
1 package dk.thoerup.smssend;
2
3 import java.net.URL;
4 import java.net.URLConnection;
5 import java.util.ArrayList;
6
7 import android.R.bool;
8 import android.app.Activity;
9 import android.content.Intent;
10 import android.content.SharedPreferences;
11 import android.os.Bundle;
12 import android.provider.ContactsContract;
13 import android.telephony.SmsManager;
14 import android.util.Log;
15 import android.view.Menu;
16 import android.view.MenuItem;
17 import android.view.View;
18 import android.view.View.OnClickListener;
19 import android.widget.AdapterView;
20 import android.widget.ArrayAdapter;
21 import android.widget.Button;
22 import android.widget.EditText;
23 import android.widget.Spinner;
24 import android.widget.Toast;
25 import android.widget.AdapterView.OnItemSelectedListener;
26
27 public class SmsSend extends Activity {
28 /** Called when the activity is first created. */
29
30 final int MAXCOUNT = 25;
31 final String SMSDAEMON = "42407617";
32
33 final int OPTIONS_SETTINGS = 1000;
34
35 @Override
36 public void onCreate(Bundle savedInstanceState) {
37 super.onCreate(savedInstanceState);
38 setContentView(R.layout.main);
39
40 Button select = (Button) findViewById(R.id.selectNumber);
41 select.setOnClickListener( selectListener );
42
43 Button send = (Button) findViewById(R.id.send);
44 send.setOnClickListener(sendListener);
45
46
47
48 Spinner method = (Spinner) findViewById(R.id.method);
49 ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this, R.array.methods, android.R.layout.simple_spinner_item);
50 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
51 method.setOnItemSelectedListener(methodSelected);
52 method.setAdapter(adapter);
53 method.setSelection(0);
54
55 }
56
57 @Override
58 public boolean onCreateOptionsMenu(Menu menu) {
59 MenuItem item;
60
61 item = menu.add(0, OPTIONS_SETTINGS, 0, "Settings");
62 item.setIcon(android.R.drawable.ic_menu_edit);
63
64 return true;
65 }
66
67 @Override
68 public boolean onOptionsItemSelected(MenuItem item) {
69 boolean retval = true;
70
71 //TODO: Cleanup
72 switch (item.getItemId()) {
73 case OPTIONS_SETTINGS:
74 Intent i = new Intent(this, dk.thoerup.smssend.SmsConfig.class);
75 startActivity(i);
76 break;
77 default:
78 retval = super.onOptionsItemSelected(item);
79 }
80 return retval;
81
82 }
83
84 void lookup() {
85 /*
86 Intent intent = new Intent(Intent.ACTION_PICK, People.CONTENT_URI);
87
88 startActivityForResult(intent, 1);
89 */
90
91
92 Intent intent = new Intent(Intent.ACTION_PICK);
93 intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
94
95
96 startActivityForResult(intent, 1);
97
98
99
100 /*
101 Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
102 null, null, null, null);
103 while (cursor.moveToNext()) {
104 String contactId = cursor.getString(cursor.getColumnIndex(
105 ContactsContract.Contacts._ID));
106 String hasPhone = cursor.getString(cursor.getColumnIndex(
107 ContactsContract.Contacts.HAS_PHONE_NUMBER));
108 String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
109
110 Log.v("contact", name + " : " + hasPhone);
111
112
113
114 if (Integer.parseInt(hasPhone) > 0) {
115 // You know have the number so now query it like this
116 Cursor phones = getContentResolver().query(
117 ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
118 null,
119 ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,
120 null, null);
121 while (phones.moveToNext()) {
122 int phoneIdx = phones.getColumnIndex( ContactsContract.CommonDataKinds.Phone.NUMBER);
123 String phoneNumber = phones.getString( phoneIdx );
124 Log.v("phone", phoneNumber);
125
126 }
127 phones.close();
128 }
129
130 }
131 cursor.close();
132 */
133
134 }
135
136 OnClickListener selectListener = new OnClickListener() {
137 @Override
138 public void onClick(View v) {
139 lookup();
140 }
141 };
142
143
144 OnClickListener sendListener = new OnClickListener() {
145 @Override
146 public void onClick(View v) {
147 Spinner method = (Spinner) findViewById(R.id.method);
148 int sel = method.getSelectedItemPosition();
149
150 boolean ret = false;
151
152 switch (sel) {
153 case 0:
154 ret = sendInternal();
155 break;
156 case 1:
157 ret = sendCoolSms();
158 break;
159 case 2:
160 ret = sendSmsDaemon();
161 break;
162
163 }
164
165 String msg = "Done!";
166 if (ret == false)
167 msg = "failed!";
168
169 Toast.makeText(SmsSend.this, msg, Toast.LENGTH_LONG).show();
170
171 }
172 };
173
174 int getCount() {
175 EditText countView = (EditText) findViewById(R.id.count);
176 String strCount = countView.getText().toString();
177
178 int count = Integer.parseInt(strCount);
179
180 return Math.min(count, MAXCOUNT); //limit to MAXCOUNT
181 }
182
183 int getInterval() {
184 EditText intView = (EditText) findViewById(R.id.interval);
185 String strInt = intView.getText().toString();
186
187 return Integer.parseInt(strInt);
188 }
189
190 String getFrom() {
191 EditText origin = (EditText) findViewById(R.id.origin);
192 return origin.getText().toString().trim();
193 }
194
195 String getTo() {
196 EditText destination = (EditText) findViewById(R.id.destination);
197 String to = destination.getText().toString().trim();
198
199 to = to.replace("+", "");
200 if (to.length() < 10) {
201 to = "45" + to;
202 }
203 return to;
204 }
205
206 String getMessage() {
207 EditText message = (EditText) findViewById(R.id.message);
208 return message.getText().toString().trim();
209 }
210
211 boolean sendInternal() {
212 int count = getCount();
213 String to = getTo();
214
215 SmsManager sms = SmsManager.getDefault();
216 ArrayList<String> parts = sms.divideMessage(getMessage() );
217
218 for (int i=0; i<count; i++) {
219 sms.sendMultipartTextMessage(to, null, parts, null, null);
220 }
221
222 return true;
223 }
224
225 boolean isNumeric(String str) {
226 for (int i=0; i<str.length(); i++) {
227 char c = str.charAt(i);
228 if (! Character.isDigit(c) )
229 return false;
230 }
231
232 return true;
233 }
234
235 boolean sendCoolSms() {
236 SharedPreferences prefs = this.getSharedPreferences("SmsSend", MODE_PRIVATE);
237 String user = prefs.getString("cooluser", "");
238 String pass = prefs.getString("coolpass", "");
239
240 if (user.equals("") || pass.equals("")) {
241 Toast.makeText(this, "No username or password set!", Toast.LENGTH_LONG).show();
242 return false;
243 }
244
245 if ( isNumeric(getFrom()) ) {
246 Toast.makeText(this, "Can not send when 'from' equals a number\nmust add letters", Toast.LENGTH_LONG).show();
247 return false;
248 }
249
250 //"http://sms.coolsmsc.dk:8080/?username=%s&password=%s&to=%s&from=SMS+HTTP+GW&message=hello+world"
251 StringBuilder sb = new StringBuilder();
252 sb.append("http://sms.coolsmsc.dk:8080/");
253 sb.append("?username=").append(user);
254 sb.append("&password=").append(pass);
255 sb.append("&to=").append( getTo() );
256 sb.append("&from=").append( getFrom() );
257 sb.append("&message=").append( getMessage() );
258
259 Log.v("SmsSend", sb.toString());
260
261 try {
262 URL u = new URL( sb.toString() );
263 URLConnection conn = u.openConnection();
264 conn.getInputStream();
265
266
267
268 } catch (Exception e) {
269 Log.e("SmsSend", "sendCoolSms", e);
270 return false;
271 }
272
273 return true;
274 }
275
276 boolean sendSmsDaemon() {
277
278 int count = getCount();
279 int interval = getInterval();
280 String to = getTo();
281
282 String msg = "spam " + to + " " + count + " " + interval + " " + getMessage();
283
284 SmsManager sms = SmsManager.getDefault();
285 ArrayList<String> parts = sms.divideMessage(msg);
286
287
288 sms.sendMultipartTextMessage(SMSDAEMON, null, parts, null, null);
289
290 return true;
291 }
292
293 OnItemSelectedListener methodSelected = new OnItemSelectedListener() {
294 public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
295 switch (pos) {
296 case 0:
297 findViewById(R.id.interval).setEnabled(false);
298 findViewById(R.id.origin).setEnabled(false);
299 findViewById(R.id.count).setEnabled(true);
300 break;
301 case 1:
302 findViewById(R.id.interval).setEnabled(false);
303 findViewById(R.id.origin).setEnabled(true);
304 findViewById(R.id.count).setEnabled(false);
305 break;
306 case 2:
307 findViewById(R.id.interval).setEnabled(true);
308 findViewById(R.id.origin).setEnabled(false);
309 findViewById(R.id.count).setEnabled(true);
310 break;
311 }
312 }
313
314 @Override
315 public void onNothingSelected(AdapterView<?> arg0) {
316
317 }
318 };
319
320 }

  ViewVC Help
Powered by ViewVC 1.1.20