XMPPのテキストメッセージを監視する
XMPPのテキストメッセージはIntentReceiverで受けることが出来ません。
これがかなり痛いので自前でテキストメッセージが送られてきたか監視するサービスを作成してみました。
public class MessageWatcher extends Service { private ContentObserver observer; @Override public IBinder getBinder() { return null; } @Override protected void onStart(int startId, Bundle arguments) { super.onStart(startId, arguments); observer = new ContentObserver(new Handler()) { @Override public void onChange(boolean selfChange) { super.onChange(selfChange); NotificationManager nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); nm.notifyWithText(123,"メッセージが届きました。", NotificationManager.LENGTH_SHORT, null); } }; getContentResolver().registerContentObserver( Im.Messages.CONTENT_URI, true, observer); } @Override protected void onDestroy() { super.onDestroy(); getContentResolver().unregisterContentObserver(observer); } }
これでGoogleTalkクライアントからメッセージが送られてきたことを検知することができます。
ただし誰からどんなメッセージが来たかまったくわからないという致命的問題があるのであんまり使えないと思います。