ということが下記サイトで話題になっていたので検証してみました。
前提として framework.jar を書き換えて custom_settings.xml を置いてあり、下のように Allow push messages がONであるとします。
で、うちの個体で試した限りではWi-fi接続した状態でスリープに入るとMMSを受信できないことを確認しました。
原因は「disableApnType(default)」されてるので通知が来ない!ということみたいです。
状況確認
logcatで見る限り Wi-fi をOnにしただけでは「disableApnType(default)」されません。画面が消えてスリープするタイミングで「disableApnType(default)」が呼び出されて3Gの接続が切れます。
この状態ではデータ接続が切断されているためでWAP PUSHの通知が来ません。
WAP PUSHが来ないと端末はMMSが来たことに気が付きもしないので当然受信できないということになります。
これはスリープから起きても手動でWi-fiを切断しない限り解除「enableApnType(default)」されないようです。
20101203追記
今日再度試したところ、Wi-fiが有効になった時点で「disableApnType(default)」がログに出てきました。その状態で画面をOFFにしてMMSをGmailから送りつけたらWAP PUSH通知が来て受信できたのでまた難しい話になってきた…
その後いくつか条件を変えて検証してみたところやはりWi-fiをONにしている時にのみWAP PUSHが来ないことがあるようでした。Wi-fiをOFFで受信できなかったことはないのでやはりそこら辺??
どうすればいいの?
Wi-fiに接続した状態でスリープに入らなければいいと思います。
…というわけにもいかないので、確認できた状況を元にもうちょっと調査。
状況的にWi-fi接続マネージャあたりが怪しいとのでそこら辺を重点的に調査してここに追記します。
他機種の場合
Galaxy S(froyo)で追試してみました。
Wi-fiをONにした時点で「disableApnType(default)」されてます。OFFにしても「enableApnType(default)」されません…
こちらの場合は「disableApnType(default)」でも当然MMSの受信はできます。SMSの受信をした時点で色々やってるようです。
mini proの場合SMSを受信したログが出ないのでちょっと違うのかもしれません。
時間が取れたらNexus Oneあたりでも調査してみようかと思います。