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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 745 - (hide annotations) (download)
Tue May 25 13:54:28 2010 UTC (14 years ago) by torben
File size: 8067 byte(s)
import
1 torben 745 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