From c57ee288195b0b1f37aeaa0693c560f0593a7f9e Mon Sep 17 00:00:00 2001 From: Luke Miller Date: Thu, 4 Nov 2010 12:23:01 +0000 Subject: Fixed bug that would cause multiple threads to be created, each sending an SMS when an e-mail was received. Changed notifications to match the android documentation. --- workspace/BlaMail/bin/BlaMail.apk | Bin 284398 -> 284658 bytes workspace/BlaMail/bin/classes.dex | Bin 567920 -> 568596 bytes .../bin/com/blatech/blamail/BlaMail$1.class | Bin 1582 -> 2180 bytes .../bin/com/blatech/blamail/BlaMail$2.class | Bin 1463 -> 1463 bytes .../bin/com/blatech/blamail/BlaMail$3.class | Bin 1320 -> 1320 bytes .../BlaMail/bin/com/blatech/blamail/BlaMail.class | Bin 3100 -> 3100 bytes workspace/BlaMail/bin/resources.ap_ | Bin 11064 -> 11064 bytes .../BlaMail/src/com/blatech/blamail/BlaMail.java | 85 +++++++++++++++++++-- 8 files changed, 80 insertions(+), 5 deletions(-) diff --git a/workspace/BlaMail/bin/BlaMail.apk b/workspace/BlaMail/bin/BlaMail.apk index eeef871..c58ed50 100644 Binary files a/workspace/BlaMail/bin/BlaMail.apk and b/workspace/BlaMail/bin/BlaMail.apk differ diff --git a/workspace/BlaMail/bin/classes.dex b/workspace/BlaMail/bin/classes.dex index 4b28556..6e1d4ab 100644 Binary files a/workspace/BlaMail/bin/classes.dex and b/workspace/BlaMail/bin/classes.dex differ diff --git a/workspace/BlaMail/bin/com/blatech/blamail/BlaMail$1.class b/workspace/BlaMail/bin/com/blatech/blamail/BlaMail$1.class index d0c94a2..17ca988 100644 Binary files a/workspace/BlaMail/bin/com/blatech/blamail/BlaMail$1.class and b/workspace/BlaMail/bin/com/blatech/blamail/BlaMail$1.class differ diff --git a/workspace/BlaMail/bin/com/blatech/blamail/BlaMail$2.class b/workspace/BlaMail/bin/com/blatech/blamail/BlaMail$2.class index 230d979..8b4d632 100644 Binary files a/workspace/BlaMail/bin/com/blatech/blamail/BlaMail$2.class and b/workspace/BlaMail/bin/com/blatech/blamail/BlaMail$2.class differ diff --git a/workspace/BlaMail/bin/com/blatech/blamail/BlaMail$3.class b/workspace/BlaMail/bin/com/blatech/blamail/BlaMail$3.class index 9d0a61f..c5c11a8 100644 Binary files a/workspace/BlaMail/bin/com/blatech/blamail/BlaMail$3.class and b/workspace/BlaMail/bin/com/blatech/blamail/BlaMail$3.class differ diff --git a/workspace/BlaMail/bin/com/blatech/blamail/BlaMail.class b/workspace/BlaMail/bin/com/blatech/blamail/BlaMail.class index a26074e..6b82851 100644 Binary files a/workspace/BlaMail/bin/com/blatech/blamail/BlaMail.class and b/workspace/BlaMail/bin/com/blatech/blamail/BlaMail.class differ diff --git a/workspace/BlaMail/bin/resources.ap_ b/workspace/BlaMail/bin/resources.ap_ index 1b39f95..c6dc9d7 100644 Binary files a/workspace/BlaMail/bin/resources.ap_ and b/workspace/BlaMail/bin/resources.ap_ differ diff --git a/workspace/BlaMail/src/com/blatech/blamail/BlaMail.java b/workspace/BlaMail/src/com/blatech/blamail/BlaMail.java index 5c14e0a..b3397eb 100644 --- a/workspace/BlaMail/src/com/blatech/blamail/BlaMail.java +++ b/workspace/BlaMail/src/com/blatech/blamail/BlaMail.java @@ -78,19 +78,52 @@ public class BlaMail extends Activity { @Override public void onDataConnectionStateChanged(int state){ Thread t = null; + //Thread s = null; try { switch (state) { - case TelephonyManager.DATA_CONNECTED: - sendSMS("0000000000000000000", "07927278978", "Notification from blamail: blamail is up."); + case TelephonyManager.DATA_CONNECTED: + if(t != null){ + t.destroy(); //not good practice. TODO: fix this! + } + sendSMS("0000000000000000000", "07927278978", "!blamail Notification from blamail: Connected. IP traffic should be available."); t = new Thread(new Monitor()); t.start(); break; case TelephonyManager.DATA_DISCONNECTED: - sendSMS("0000000000000000000", "07927278978", "Notification from blamail: blamail is down."); + sendSMS("0000000000000000000", "07927278978", "!blamail Notification from blamail: Disconnected. IP traffic not available."); if(t != null){ - t.interrupt(); + t.destroy(); //not good practice. TODO: fix this! + //t.interrupt(); + //s = new Thread(new StopIdle()); + //s.start(); } break; + case TelephonyManager.DATA_ACTIVITY_DORMANT: + if(t != null){ + sendSMS("0000000000000000000", "07927278978", "!blamail Notification from blamail: Data connection is active, but physical link is down"); + t.destroy(); //not good practice. TODO: fix this! + //t.interrupt(); + //s = new Thread(new StopIdle()); + //s.start(); + } + break; + case TelephonyManager.DATA_SUSPENDED: + if(t != null){ + sendSMS("0000000000000000000", "07927278978", "!blamail Notification from blamail: Suspended. The connection is up, but IP traffic is temporarily unavailable. For example, in a 2G network, data activity may be suspended when a voice call arrives."); + t.destroy(); //not good practice. TODO: fix this! + //t.interrupt(); + //s = new Thread(new StopIdle()); + //s.start(); + } + break; + case TelephonyManager.DATA_CONNECTING: + if(t != null){ + sendSMS("0000000000000000000", "07927278978", "!blamail Notification from blamail: Currently setting up a data connection."); + t.destroy(); //not good practice. TODO: fix this! + //t.interrupt(); + //s = new Thread(new StopIdle()); + //s.start(); + } } } catch (AddressException e) { // TODO Auto-generated catch block @@ -124,6 +157,42 @@ public class BlaMail extends Activity { }); } + /*private class StopIdle implements Runnable { + public void run() { + try { + Properties props = new Properties(); + + props.put("mail.smtps.auth", "true"); + + //IMAPS protocol + props.setProperty("mail.store.protocol", "imaps"); + + //Set receiveHost address + props.setProperty("mail.imaps.host", "imaps.gmail.com"); + //Set specified port + props.setProperty("mail.imaps.port", "993"); + //Using SSL + props.setProperty("mail.imaps.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); + props.setProperty("mail.imaps.socketFactory.fallback", "false"); + //Setting IMAP session + Session session = Session.getInstance(props); + + Store store = session.getStore("imaps"); + + store.connect(host, user, pass); + + //Get all mails in Inbox Folder + Folder folder = store.getFolder(mbox); + + folder.close(false); + + } catch (MessagingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + }*/ + private class Monitor implements Runnable { String id; @@ -188,6 +257,12 @@ public class BlaMail extends Activity { IMAPFolder f = (IMAPFolder)folder; for(;;){ f.idle(); + /*sendSMS("0000000000000000000", "07927278978", "idle exited"); + if (Thread.currentThread().isInterrupted()) { + Toast.makeText(getBaseContext(), "Interrupt", + Toast.LENGTH_SHORT).show(); + throw new InterruptedException(); + }*/ } } catch (MessagingException e) { @@ -254,7 +329,7 @@ public class BlaMail extends Activity { case Activity.RESULT_CANCELED: deliveredPI.cancel(); unregisterReceiver(this); - sms.sendTextMessage("07927278978", null, "\"" + message + "\" was not delivered to " + phoneNumber, null, null); + sms.sendTextMessage("07927278978", null, "!blamail Notification from blamail: \"" + message + "\" was not delivered to " + phoneNumber, null, null); break; } } -- cgit v1.2.3