![]() Android】メール受信イベントを受け取る: Y0. AndroidでメールをサーバPUSHにより受信した契機で、様々な処理を動作させる(etc.オリジナル着信音再生等)ことが可能か試してみた。まず、前提として2つのポイントがある。1.Broadcast.Receiver2.Androidの「メール」について1.Broadcast.Receiverhttp: //developer.Broadcast. Receiver.Intent. Receiver. Ex/index. htmlここら辺かな。。。要はOSで管理されているアプリに特定の処理を契機にイベントを発信(broadcast)する仕組み。で、どの処理時にイベントを取れるかはAndroid公式のIntentクラス説明にある「Standard Broadcast Actions」(日本語はこことか)時刻設定変更、電源起動時、アプリインストール等が並んでる。おや、メール受信がないとお気付きのあなた!!そうなんですないんです。「神は言っている。ググレカスと」で分かったことは「あるけど公開してない(保障されてない?)」イベントがあるらしい2.Androidの「メール」についてAndroidの場合、現在発売済みの実機を見たところ基本的に3つのメールがあるようです。(1)Gmail(2)E- mail(PCメール)(3)キャリアメール(SMS/MMS)(1),(2)はだいたいわかると思いますが、(3)は分かりずらいと思いますが、ざっくりとSoft. Bankの場合は「S!メール」docomoの場合は「spモードメール」、AUの場合は「Cメール」と思ってもらって大丈夫。ここまで分かれば、こんな風に各メール受信時に発するbroadcastイベントを受け取るReceiverアプリを作ればいいじゃん。そんな風に考えていた時期が俺にもありました。まずはソースを晒そう[Android. Manifest. xml]. < ? Test. Receiver. java]package po. Broadcast. Receiver. Context. import android. Intent. import android. В нашей мастерской Вы можете с легкостью отремонтировать свой чемодан. Наши специалисты. Watch32 - Watch Movies on Watch32.com - Watch32 is the Biggest Library of free Full Movies. Watch 32 Movies Online.Toast. public class Test.Receiver extends Broadcast.Receiver {. private static final String SMS_RECEIVED = "android.Telephony. SMS_RECEIVED".String WAPPUSH_RECEIVED = "android.Telephony. WAP_PUSH_RECEIVED". String MMS_RECEIVED = "android. CONTENT_CHANGED". Receive(Context context, Intent intent) {. Intent. ACTION_NEW_OUTGOING_CALL. Action())) {. System. Toast. make. Text(context, "ougoing call received", Toast. Tabtight professional, free when you need it, VPN service. Top VIdeos. Warning: Invalid argument supplied for foreach() in /srv/users/serverpilot/apps/jujaitaly/public/index.php on line 447. Torrentz will always love you. Farewell. © 2003-2016 Torrentz.
LENGTH_LONG). show(). Intent. ACTION_PROVIDER_CHANGED. Action())) {. System. Toast. make. Text(context, "gmail received", Toast. LENGTH_LONG). show(). SMS_RECEIVED. equals(intent. Action())) {. System. Toast. make. Text(context, "sms received", Toast. LENGTH_LONG). show(). WAPPUSH_RECEIVED. Action())) {. System. Toast. make. Text(context, "wap push received", Toast. LENGTH_LONG). show(). MMS_RECEIVED. equals(intent. Action())) {. System. Toast. make. Text(context, "mms received", Toast. LENGTH_LONG). show(). SMS受信イベント(android. Telephony. SMS_RECEIVED)】これはここに載ってるように書いたで、SMSならば3キャリアとも動いた。Soft. Bankの場合S!メール設定の「SMS/S!メール受信の優先設定」をONにすると何故かSMS受信イベント発生しなかったが。。。同一キャリアしか送れないSMSなんて使わねえよという話は置いといて【Gmail受信イベント(android. PROVIDER_CHANGED)】これは、ここ見た。Android. IS0. 3だと動かなかった。。。AUが悪いのか、Android. Android. 2. 2機種)Sending notification intent: Intent { act=android. PROVIDER_CHANGED dat=content: //gmail- ls/unread/^i (has extras) }・gmail受信イベントできなかった端末(IS0. Sending notification intent: Intent { act=android. PROVIDER_CHANGED dat=content: //gmail- ls/unread/^i typ=gmail- ls (hasextras) }この「typ=gmail- ls」が曲者のような気がする。。。intent- filterでこれを引っかけるための情報が必要なのか。。。。【キャリアメール受信イベント(android. Telephony. WAP_PUSH_RECEIVED)】こ項目だけ、サッパわからん。。。一応ここ見たこのページの通りdocomoで全く通知なし。というかlogcat見てると全くどこにもIntent投げてる気配なし。どういうことなの。。。ヽ(`⌒´♯)ノで、色々試行錯誤したところ、logcat見ると以下の行が出力されてるのを発見。V/Mms. System. Event. Receiver(1. Intent received: Intent { act=android. CONTENT_CHANGED cmp=com. Mms. System. Event. Receiver (has extras) }したらば、Android. Manifest. XMLに以下のintent- filterを追加< action android: name="android. CONTENT_CHANGED" /> で、なんと受信成功ヽ(●`∀´)乂(○`∀´)ノ本当にこれでいいのか!!でもググってもMMS関連でしかこのintent- filter使われてないようだし。。。とうことで以下の結果となりますた。Gmail・・・基本的(Android. SMS・・・基本的に可能(機種(アプリ)依存有り)キャリアメール・・・今のところS!メールのみ可能尚、俗に言うEmail(PCメール)に関しては全く詳細不明。というか完全にキャリア・メーカー依存な気がするし、そもそもPUSHを使わずにポーリングでポートからメール取ってるような子や、logcat見ててもIntentを全く投げない子が多く、世はまさに世紀末状態。( ゜∀゜)ヒャッハー!【結論】そもそも標準仕様がない。偶然ブロードキャストイベントを発行する良心的なメールアプリがあっても動作するとは限らない。(* ̄ノ ̄)/Ωチーン.
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |