问题
I know that an incoming sms can be easily intercepted using a broadcast reciever. But I did not see any way to intercept an outgoing sms. How can this be done? But there is a way to do this.. Because many third party applications read both incoming and outgoing sms.
回答1:
You will have to do something like this:
- Cache all messages's hash code on the phone
- Register an content observer for content://sms
- In onChange method of observer, enumrate all messages to check if it is in cache, if not, the message is sent out just now.
Good luck with your project :-)
Edit: md5 method
You can take the (arrival date + message) text to get a unique md5 output.
private String md5(String in) {
MessageDigest digest;
try {
digest = MessageDigest.getInstance("MD5");
digest.reset();
digest.update(in.getBytes());
byte[] a = digest.digest();
int len = a.length;
StringBuilder sb = new StringBuilder(len << 1);
for (int i = 0; i < len; i++) {
sb.append(Character.forDigit((a[i] & 0xf0) >> 4, 16));
sb.append(Character.forDigit(a[i] & 0x0f, 16));
}
return sb.toString();
} catch (NoSuchAlgorithmException e) { e.printStackTrace(); }
return null;
}
来源:https://stackoverflow.com/questions/5787894/android-is-there-any-way-to-listen-outgoing-sms