Wie öffnet die App automatisch?

  • Antworten:6
Gregor B.
  • Forum-Beiträge: 3

09.06.2015, 20:40:30 via Website

Hallo Leute,

ich habe folgendes Problem, ich muss für die Schule ganz dringend eine App programmieren, die sich automatisch öffnet, wenn eine SMS von einer bestimmten Nummer mit einem vordefinierten Text ankommt.

z.B.:
Nummer: 12345
Text: Testergebnis

Jetzt soll sich die App jedes Mal öffnen, wenn eine SMS von "12345" mit dem Textinhalt "Testergebnis" ankommt.


Ich bräuchte dringend Lösungen bitte.
Es ist für ein sehr wichtiges Projekt.

Danke im Voraus

— geändert am 09.06.2015, 21:04:12

Antworten
Klaus
  • Blogger
  • Forum-Beiträge: 19.172

09.06.2015, 20:48:10 via App

Hallo Gregor B.!

Herzlich Willkommen hier bei uns im Forum.

Bitte beachte, dass Threads mit nicht aussagekräftigem Titel bei uns üblicherweise den Regeln entsprechend entfernt werden. Ich bitte dich daher, deinen Threadtitel innerhalb der nächsten 24 Stunden, spätestens jedoch bei deinem nächsten Besuch noch etwas aussagekräftiger zu gestalten (Hierfür einfach unter deinem ersten Beitrag auf 'bearbeiten' klicken, dann kannst du oben noch mal den Titel anpassen)

Danke :)

| LG Klaus |
| Google Nexus 6P - Dirty Unicorns | Google Nexus 6 - Dirty Unicorns |
| Das AndroidPITiden-Buch | Die Androiden-Toolbox | AndroidPIT-Regeln |

Antworten
Gregor B.
  • Forum-Beiträge: 3

10.06.2015, 17:16:09 via Website

Vielen Danke für den Link.

Ich habe alles genau so gemacht wie beschrieben, das Problem ist aber, dass die App sich trotzdem nicht öffnet wenn eine SMS ankommt.

Wäre echt toll wenn ich weitere Ideen, oder Lösungen bekommen könnte, da ich diese Funktion wirklich sehr dringend benötige.

Danke
MfG

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

10.06.2015, 17:33:00 via Website

Das Beispiel im Link von Sven sollte so funktionieren. Zeig uns doch mal deinen Code und deine Manifest :)

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Gregor B.
  • Forum-Beiträge: 3

10.06.2015, 19:52:08 via Website

„Main“

public class MainActivity extends ActionBarActivity {

Button mBtnSend;
Button mBtnExitApp;
SmsListener mSmsListener;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mBtnSend = (Button) findViewById(R.id.btn_send); //Button software und layout verknüpfen
    mBtnExitApp = (Button) findViewById(R.id.btn_exit_app); //Button software und layout verknüpfen

    mBtnSend.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getBaseContext(),"Sms wird gesendet...",Toast.LENGTH_SHORT).show();



        }
    });

    mBtnExitApp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getBaseContext(),"KOMME NICHT",Toast.LENGTH_LONG).show();

        }
    });

    mSmsListener = new SmsListener(this);

}

}

„Listener Activity“

public class SmsListener extends BroadcastReceiver {

private SharedPreferences preferences;
MainActivity main;

public SmsListener(MainActivity Main)
{
    main = Main;
}

@Override
public void onReceive(Context context, Intent intent) {

    if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        main.startActivity(intent);
        Bundle bundle = intent.getExtras();           //---get the SMS message passed in---
        SmsMessage[] msgs = null;
        String msg_from;
        if (bundle != null){
            //---retrieve the SMS message received---
            try{
                Object[] pdus = (Object[]) bundle.get("pdus");
                msgs = new SmsMessage[pdus.length];
                for(int i=0; i<msgs.length; i++){
                    msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
                    msg_from = msgs[i].getOriginatingAddress();
                    String msgBody = msgs[i].getMessageBody();
                }
            }catch(Exception e){
            }
        }
    }

    /*
    if (Telephony.Sms.Intents.SMS_RECEIVED_ACTION.equals(intent.getAction())) {
        for (SmsMessage smsMessage : Telephony.Sms.Intents.getMessagesFromIntent(intent)) {
            String messageBody = smsMessage.getMessageBody();
        }
    }
    */
}

}
Manifast

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
<receiver android:name="SmsListener">
    <intent-filter android:priority="2147483647">
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
</receiver>

<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>

Das wäre der Code.
Vielen Dank für die Mithilfe.
Wie gesagt, es ist wirklich dringend.

Danke.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

10.06.2015, 20:21:09 via Website

  1. in einen BroadcastReceiver kannst du keine Activity Instaz übergeben, d.h. du solltest den Block mit Konstruktor und Parameter zur Actvity löschen.
    Statt die Activity nimmst du den Parameter context der onReceive Methode.

  2. In der Manifest muss hier ein Punkt rein: <receiver android:name=".SmsListener">und das application Tag der YXML darf erst nach dem Receiver zugehen:

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

</application>
  1. Woher weisst du das der Code stimmt? Am besten mit dem Debugger und Breakpoints an die sache rangehen und schauen on die onReceive Methode aufgerufen weird. Wenn ja liegt es an dem darinliegenden Code. Und bitte werte deine Exceptions aus wenigstens mit Exception#printStackTrace()

— geändert am 10.06.2015, 20:24:16

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten