AndroidManifest.xml
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" >
<receiver android:name=".Receiver" >
<intent-filter >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>
Receiver.java
in nativen SMS-App gezeigt
import java.util.ArrayList;
import android.content.Context;
import android.content.Intent;
import android.content.BroadcastReceiver;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
public class Receiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent) {
//---get the SMS message passed in---
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
if (bundle != null)
{
//---retrieve the SMS message received---
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]);
checkSMS(context, msgs[i]);
}
}
}
void checkSMS(Context context, SmsMessage sms)
{
String msg = sms.getMessageBody().toString();
}
}
Ich nenne das wie folgt, es wird nur einmal ausgeführt und bleibt 20 Sekunden oder länger nicht am Leben. Die Nachricht wird innerhalb von 20 Sekunden gesendet. Ich möchte, dass sie mindestens 20 Sekunden lang zuhören sollte. \t 'sms.sendTextMessage (" XXXXXX ", null," MSG ", null, null); Empfänger rc = neuer Empfänger(); rc.onReceive (getContext(), neue Absicht ("android.provider.Telephony.SMS_RECEIVED")); ' – AAB
Ich habe nicht verstanden, was du meinst, aber ich denke, du machst etwas falsch, du musst nicht erstellen neue Receiver-Klasse und rufen Sie rc.onreceive auf. Erstellen Sie ein Receiver.java als das Beispiel, das ich Ihnen gab, und fügen Sie Ihr Manifest diese Klasse hinzu, wie ich in meiner Antwort geschrieben habe. Als wenn Telefon ruft eine SMS von jemandem, Android-Telefonie-Framework ruft Ihre Anwendungen Receiver-Klassen OnReceive-Methode auch Ihre Anwendung ist nicht geöffnet. und Sie können tun, was Sie wollen, auf Checks-Funktion. –