S
sem_thesis
Fortgeschrittenes Mitglied
- 0
Hallloooo!
Heute geht's um einen neuen Feature
--> SMS Mining
Ich möchte einen Service, der auf ausgehende und hereinkommende SMS reagiert und die folgenden Werte speichert:
- Datum
- Zeit
- Kontaktperson
- Nummer der Kontaktperson
- # Zeichen des SMS
Inhalt der SMS wird nicht ausgelesen.
Jetzt habe ich mich auf StackOverFlow und das Programm 'SMS Backup' (https://github.com/jberkel/sms-backup-plus/tree/master/src/com/zegoggles/smssync) angeschaut um Tipps zu holen.
Den ganzen Service habe ich unterteilt in 3 Teile:
1. SMS History Collection
2. Incoming SMS
3. Outgoing SMS
2. Teil
Mit dem 2. Teil habe ich schon angefangen - ich kann den Inhalt + Absender von empfangener SMS anzeigen.
Die Klasse SMSReceiver.java hört auf die Variable 'android.provider.Telephony.SMS_RECEIVED'
3. Teil
Hier habe ich erstmals einfach nur versucht den Namen der Kontaktperson anzeigen zu lassen - und schon das hat nicht funktioniert
Hat jemand eine Idee/Vorschlag zum Teil 3 (oder sonstige Bemerkungen)?
PS: Die folgenden 2 Methoden der CursorToMessage.java Klasse enthalten die nötige Information:
https://github.com/jberkel/sms-back...m/zegoggles/smssync/CursorToMessage.java#L306
https://github.com/jberkel/sms-back...m/zegoggles/smssync/CursorToMessage.java#L161
Heute geht's um einen neuen Feature
--> SMS Mining
Ich möchte einen Service, der auf ausgehende und hereinkommende SMS reagiert und die folgenden Werte speichert:
- Datum
- Zeit
- Kontaktperson
- Nummer der Kontaktperson
- # Zeichen des SMS
Inhalt der SMS wird nicht ausgelesen.
Jetzt habe ich mich auf StackOverFlow und das Programm 'SMS Backup' (https://github.com/jberkel/sms-backup-plus/tree/master/src/com/zegoggles/smssync) angeschaut um Tipps zu holen.
Den ganzen Service habe ich unterteilt in 3 Teile:
1. SMS History Collection
2. Incoming SMS
3. Outgoing SMS
2. Teil
Mit dem 2. Teil habe ich schon angefangen - ich kann den Inhalt + Absender von empfangener SMS anzeigen.
Die Klasse SMSReceiver.java hört auf die Variable 'android.provider.Telephony.SMS_RECEIVED'
Code:
public class SMSReceiver extends BroadcastReceiver {
private static final String TAG = "SMSReceiver";
private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION)) {
/* The SMS-Messages are 'hiding' within the extras of the Intent. */
Bundle bundle = intent.getExtras();
if (bundle != null) {
/* Get all messages contained in the Intent*/
Object[] pdus = (Object[])bundle.get("pdus");
final SmsMessage[] messages = new SmsMessage[pdus.length];
/* Feed the StringBuilder with all Messages found. */
for (int i = 0; i < pdus.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
}
if (messages.length > -1) {
Log.i(TAG, "SMS Received!");
Log.d(TAG, "Sender: " + messages[0].getDisplayOriginatingAddress());
Log.d(TAG, "Content: " + messages[0].getDisplayMessageBody());
Log.d(TAG, "Number of Characters: " + pdus.length);
}
}
}
}
}
Hier habe ich erstmals einfach nur versucht den Namen der Kontaktperson anzeigen zu lassen - und schon das hat nicht funktioniert
Code:
public MySMSCollector() {
String selection = String.format("%s > ? AND %s <> ?", "date", "type");
String sortOrder = "date";
final Cursor c = getContentResolver().query(
Uri.parse("content://sms"),
null,
selection,
null,
sortOrder);
int i = 1;
if(c.moveToFirst()) {
while(!c.isAfterLast()) {
int p = c.getInt(c.getColumnIndex("person"));
Log.d(TAG, "Person: " + p);
c.moveToNext(); // move to the next entry
i++;
}
}
c.close();
}
PS: Die folgenden 2 Methoden der CursorToMessage.java Klasse enthalten die nötige Information:
https://github.com/jberkel/sms-back...m/zegoggles/smssync/CursorToMessage.java#L306
https://github.com/jberkel/sms-back...m/zegoggles/smssync/CursorToMessage.java#L161
Zuletzt bearbeitet: