auf bestimmte E-Mails reagieren!!! APP programmieren !!

  • Antworten:10
  • Bentwortet
pramkies
  • Forum-Beiträge: 25

11.11.2011, 09:32:14 via Website

Ziel: APP programmieren der beim Eingang eine Bestimmte E-Mail reagieren soll , über Betreffzeile oder ..... ?

Werkzeug: Eclipse, Java

bin ein Neuling im Androide programmieren. Habe gut Java Kenntnisse . Benutzte Eclipse als Umgebung Programmierung .Mache gerade einen Praktikum im bereich Automatisierungstechnick und beschäftige mich schon mit meiner Bachelorarbeit. Eine Funktion meines Apps soll auf bestimmte E-Mails reagieren können . Es soll als ALARM HINWEIS dienen, entweder durch BEEP oder aufblinken oder.... .

kann mir einer weiter helfen ?

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

11.11.2011, 09:43:10 via Website

Ich glaube dazu wirst Du die eMails selbst abrufen müssen.
Meines Wissens ist der Eingang einer eMail in Android Sache von Apps und KEIN System-Event, den man abfangen kann, wie das z.B. bei SMS der Fall ist.
Bibliotheken zum Abrufen von eMails gibt es ja wie Sand am Meer.
K-9 Mail ist auch OpenSource, also kannst Du z.B. auch mal da im Quellcode schauen wie sowas funktioniert.

Antworten
pramkies
  • Forum-Beiträge: 25

11.11.2011, 09:56:54 via Website

danke für deine Antwort. Ich werde mich jetzt mit K9-Mail beschäftigen.
Aber wenn ich selber die Mail abrufen muss dann ist das wie Poling und so ein "ALARM E-MAIL" muss Event basiert sein ,damit es sinn macht !

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

11.11.2011, 10:00:12 via Website

Du kannst ja IMAP verwenden, da werden die eMails im PUSH Verfahren zum Gerät gesendet.
Bei Abruf per POP3 wäre es Polling und bei vielen Anbietern gibt es da auch Probleme wenn man zu oft pollt.

Oder, wenn die Lizenz von K-9 Mail das zulässt, kannst Du die App auch einfach so erweitern, dass sie bei Eingang einer Mail ein Event feuert.
Dann stellst du dort einfach ein IMAP Konto ein und musst einfach nur noch deine App so bauen, dass sie auf dieses Event reagiert.
Das wäre minimaler Aufwand und zu hättest mit der K-9 Mail Codebasis einen soliden Unterbau für das Abrufen der Mails.

EDIT:
OK hab grad mal geguckt...für K-9 Mail gibt es ja auch jede Menge Plugins.
Es gibt auch ein Plugin, das ein Popup bei eingehenden Mails anzeigt, also müssen die wohl auch Events dafür anbieten.

— geändert am 11.11.2011, 10:14:21

pramkies

Antworten
Carsten M.
  • Forum-Beiträge: 33.204

11.11.2011, 10:27:49 via Website

Hi,

eine alternative Idee:

Wenn es sich immer nur um eine bestimmte Art von E-Mail handelt (z. B. generiert von einer Überwachungskamera), dann würde ich schlicht ein spezielles E-Mail-Konto dafür einrichten ("alarm@....") und dann im E-Mail Client einen entsprechenden Alarm-Ton einrichten, der beim Eingang von Mails losgeht...

Ginge ganz ohne zusätzliche Apps.

Herzliche Grüße

Carsten

Ich komm' mir langsam vor wie jemand, der ich bin // #cäthe

pramkies

Antworten
Aeefire
  • Forum-Beiträge: 172

14.11.2011, 17:22:22 via Website

pramkies
danke für deine Antwort. Ich werde mich jetzt mit K9-Mail beschäftigen.
Aber wenn ich selber die Mail abrufen muss dann ist das wie Poling und so ein "ALARM E-MAIL" muss Event basiert sein ,damit es sinn macht !

Wieso machst du es nicht anders...
mit C2DM kannst du sogenannte "push notifications" an das gerät vom server aus schicken lassen.. das ganze würde dir den umweg über die emails, sowie das ständige abrufen der emails ersparen. ist m.m.n. die einfachste methode.

Antworten
pramkies
  • Forum-Beiträge: 25

21.11.2011, 10:26:52 via Website

hab mir K-9 Mail source code mal angeschaut aber für mich zu kompliziert.
ich möchte einfach eine Mail empfangen und mit dem Textinhalt ( Schlüsselwort String) weiterarbeiten.
zb.
1.Mail empfangen
2. Mail Inhalt irgendwie speichern zu können in eine Variabel
3. mit der Variabel weiter arbeiten

if (Variabel.equals ("Schlüsselwort")){
do ...
}

Als erstes muss ich irgend wie eine E-Mail empfangen können. Aber wie ? Intent ? oder muss ich vorher alles selber programmieren
Ich stehe voll auf dem Schlauch, komme nicht weiter.

Antworten
Florian B.
  • Forum-Beiträge: 284

21.11.2011, 11:20:18 via Website

Wie von den anderen bereits erklärt, musst du dich um das Abrufen der Mails selber kümmern.

Antworten
Jan
  • Forum-Beiträge: 2

19.01.2012, 10:46:57 via Website

Schau' Dir mal den MessageInterceptor an. Damit kannst Du E-Mails abfangen. Ansonsten schau mal in mein Tutorial, da sind noch ein paar Tipps drin: Android App programmieren - Es gibt auch bereits Apps, die das machen. Viele "Finde mein Handy" Apps funktionieren so, dass sie SMS abfangen und dann darauf eine Antwort senden. Ist eine Art Bot.

Viele Grüße,

Jan

Antworten
pramkies
  • Forum-Beiträge: 25

10.02.2012, 09:42:10 via Website

Habe es geschaft !!! hab aber noch ein Problem ! Ich kann entweder SMS oder Email empfangen!
Habe ein Broadcast Receiver der die E-mail und SMS abfangen soll !!

package xxxx.xxx.pxxxxxx;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;
import android.widget.Toast;



public class MyPhoneReceiver extends BroadcastReceiver {
public final static String TAG = "Push Receiver";

// KLassen und EXTRAS BUNDLE für E-Mail EMPFANG
public static final String EXTRA_FROM = "com.fsck.k9.intent.extra.FROM";
public static final String Mail_RECEIVED = "com.fsck.k9.intent.action.EMAIL_RECEIVED";
public static final String EXTRA_SUBJECT = "com.fsck.k9.intent.extra.SUBJECT";
// SMS EMPFANGEN
public static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
protected static final Context SMSReceived = null;


public void onReceive(Context context, Intent intent) {
//SMS....
Log.i(TAG, "Intent recieved: " + intent.getAction());
if (intent.getAction().equals(SMS_RECEIVED)) {

Bundle extras = intent.getExtras();
if (extras != null) {
Object[] pdus = (Object[]) extras.get("pdus");
SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = pdus.length; --i >= 0;) {
messages[i] = SmsMessage.createFromPdu(
(byte[]) pdus[i]);
}
for (SmsMessage message : messages) {

if (message.getDisplayMessageBody().equals("Meldung_1")){

Log.i(TAG, "SMS: " + intent.getAction());
Toast.makeText(context, "Alarm1", Toast.LENGTH_LONG).show();



}



}
}
}
// E-Mail .....
if (intent.getAction().equals(Mail_RECEIVED)) {

String subject= intent.getStringExtra(EXTRA_SUBJECT);
String from= intent.getStringExtra(EXTRA_FROM );



if(subject.equals("Meldung_1")){ // Fehler-TYP prüfen



Toast.makeText(context,"Betreff : "+subject+"\n From : "+from,Toast.LENGTH_SHORT).show();

}

}

}

}

und hier mein Manifest.xml datei:

.
.
.
<receiver android:enabled="true"
android:name=".MyPhoneReceiver">

<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"></action>

<action android:name="android.intent.action.VIEW" />
<action android:name="com.fsck.k9.intent.action.EMAIL_RECEIVED"></action>
<data
android:scheme="email"
android:host="messages"
/>

</intent-filter>
</receiver>
.
.
.

So wie die Manifest.xml ist bekomme ich nur die Mails angezeigt und die SMSen nicht !!! wenn ich die
<data
android:scheme="email"
android:host="messages"
/>
weglassen kommen die SMS an aber di E-Mails nicht mehr an !!! WAS mache ich falsch ?

— geändert am 10.02.2012, 09:59:03

Antworten
pramkies
  • Forum-Beiträge: 25

24.02.2012, 11:14:30 via Website

hab das Problem gelöst ! Hab einfach zwei verschiedene Braodcast Receiver programmiert.

Antworten