Récepteur SMS Android ne fonctionne pas
Je suis en train d'écrire une application simple qui tente de recevoir des messages SMS et de les gérer. J'ai suivi plusieurs tutoriels mais je suis nulle part, quand j'envoie un SMS à l'émulateur, l'Intention ne semble jamais à me faire virer.
Ici est de mon intention:
package com.neocodenetworks.smsfwd;
import android.content.*;
import android.os.Bundle;
import android.telephony.*;
import android.util.Log;
public class SmsReciever extends BroadcastReceiver {
private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
private static final String TAG = "smsfwd";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "Intent recieved: " + intent.getAction());
if (intent.getAction() == SMS_RECEIVED) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[])bundle.get("pdus");
final SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
}
if (messages.length > -1) {
Log.i(TAG, "Message recieved: " + messages[0].getMessageBody());
NetComm.SendMessage("me", messages[0].getOriginatingAddress(), messages[0].getMessageBody());
}
}
}
}
}
et voici mon AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.neocodenetworks.smsfwd"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
<receiver android:name=".SmsReciever">
<intent-filter>
<action android:name="android.provider.telephony.SMS_RECIEVED"></action>
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion="6" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
</manifest>
J'apprécierais vraiment quelques conseils à ce qui va mal. Je suis juste en développement Android, mais je pense que j'ai ma tête enroulée autour de (plus de). Lors de la surveillance de l'émulateur logcat, le journal des événements ne viennent jamais, et le débogage des points d'arrêt ne sont jamais touché, si j'ai le sentiment qu'il est quelque part dans mon filtre d'intention.
Je suis sur ce sur Android 2.0.1.
source d'informationauteur Jess
Vous devez vous connecter pour publier un commentaire.
En plus de Samuh réponse (vous devez faire un objet de comparaison sur la chaîne d'action, ou tout simplement ne pas faire de comparaison), dans votre fichier manifest vous avez mal orthographié
SMS_RECEIVED
.Je pense que votre manifeste semble ok, le problème est à la ligne:
Je pense qu'il devrait être:
intent.getAction().equals(ACTION)
Espère que ça aide..
Le nom de l'action semble avoir besoin d'un capital de "T" dans "Téléphonie.
android.provider.Telephony.SMS_RECEIVED
Pour
String
variables, vous ne devriez pas comparer avec==
symbole, vous devriez comparer avecequals()
méthodec'est faux
c'est juste
Depuis téléphonie est obsolète (depuis la 1.0, je pense), cette méthode ne fonctionne plus. Découvrez ce tutoriel, si vous avez besoin d'une solution adaptée:
http://mobiforge.com/developing/story/sms-messaging-android
(Je voulais juste de noter ce, depuis que je suis tombé sur beaucoup de tutoriels qui ne fonctionnent plus)