2010-09-07 4 views
2

Je souhaite recevoir le message WAP Push. Mon code est post comme suit:Impossible de recevoir le android.provider.Telephony.WAP_PUSH_RECEIVED

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

private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; 
private static final String PUSH_RECEIVED = "android.provider.Telephony.WAP_PUSH_RECEIVED"; 

@Override 
public void onReceive(Context context, Intent intent) { 
    // TODO Auto-generated method stub 
    Log.i(TAG, "Intent recieved: " + intent.getAction()); 

    if (intent.getAction().equals(SMS_RECEIVED)) { 
     //toast to show result 
     Log.i(TAG, "SMS: " + intent.getAction()); 
     Toast.makeText(context, "SMS_RECEIVED", Toast.LENGTH_LONG).show(); 


    } 
    if (intent.getAction().equals(PUSH_RECEIVED)) { 
     //toast to show result 
     Log.i(TAG, "PUSH: " + intent.getAction()); 
     Toast.makeText(context, "PUSH MSG", Toast.LENGTH_LONG).show(); 
    } 
} 

}

Le manifeste est post comme suit:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.test.pushmsg" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".main" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

    <receiver android:enabled="true" android:name=".PushMsgReceiver"> 
    <intent-filter> 
     <action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" /> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter> 
    </receiver> 
</application> 
<uses-permission android:name="android.permission.RECEIVE_WAP_PUSH"></uses-permission> 
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> 
</manifest> 

Il peut recevoir le SMS_RECEIVED, mais ne peut pas recevoir le WAP_PUSH_RECEIVED. Alors, qui sait pourquoi? J'ai essayé d'utiliser registerReceiver(), mais cela ne fonctionne pas non plus.

+0

Ni «SMS_RECEIVED» ni «WAP_PUSH_RECEIVED» ne font partie du SDK Android. – CommonsWare

+0

Je fais quelque chose de similaire ICI !!! http://stackoverflow.com/questions/14452808/sending-and-receiving-mms-in-android – toobsco42

Répondre

3

Vous devez changer le récepteur et ajouter une partie mime de données.

<receiver android:name=".IncomingMMS" android:enabled="true"> 
      <intent-filter> 
       <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" /> 
       <data android:mimeType="application/vnd.wap.mms-message" /> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="net.everythingandroid.smspopup.MESSAGE_RECEIVED" /> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="com.android.mms.transaction.MESSAGE_SENT" /> 
      </intent-filter> 
     </receiver> 
0

J'ai résolu le problème.

L'intention android.provider.Telephony.WAP_PUSH_RECEIVED a été définie comme MIME avant l'envoi.

Donc en ajoutant le type MIME dans le manifeste fonctionnera.

Questions connexes