2010-09-07 56 views
2

我想接收WAP推送消息。我的代碼是職位如下:無法接收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(); 
    } 
} 

}

清單是崗位如下:

<?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> 

它可以接收SMS_RECEIVED,但不能接收WAP_PUSH_RECEIVED。那麼誰知道爲什麼?我嘗試使用registerReceiver(),但它也不起作用。

+0

「SMS_RECEIVED」和「WAP_PUSH_RECEIVED」都不是Android SDK的一部分。 – CommonsWare 2010-09-07 11:24:01

+0

我在做類似的事情! http://stackoverflow.com/questions/14452808/sending-and-receiving-mms-in-android – toobsco42 2013-01-22 07:31:21

回答

3

您需要更改接收器並添加數據MIME部分。

<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

我已經解決了這個問題。

android.provider.Telephony.WAP_PUSH_RECEIVED意圖在發送之前設置爲MIME類型。

因此 在清單中添加MIME類型將起作用。