なんと、元々Gmailのintentを拾う部分の作りは同じなのですが、Xperia arc ではintentを拾えていないことがわかりました。
poor Gmail Notifier リリースからずっとです。
また、x10miniなどのAndroid2.1端末も拾えてなかったようです。
とくに arcは衝撃的でした。
そんな変な端末だとは思っていなかったのですが。。。。。。
結論から行くと下記のようにReceiverを仕掛けておけば、Gmailのintentはもれなく拾えていそうです。(今のところ私の知る限り。
古いAndroid端末は、mimeType付きのintentが飛んでるのはぐぐると出てきます。
<receiver android:name=".GmailReceiver" android:label="receiver"><intent-filter><action android:name="android.intent.action.PROVIDER_CHANGED" /><data android:scheme="content"android:host="gmail-ls"android:pathPrefix="/unread/^i"/></intent-filter><intent-filter><action android:name="android.intent.action.PROVIDER_CHANGED" /><data android:scheme="content"android:host="gmail-ls"android:pathPrefix="/unread/^i"android:mimeType="*/*"/></intent-filter><intent-filter><action android:name="android.intent.action.PROVIDER_CHANGED" /><data android:scheme="content" android:host="gmail-ls"android:path="/unread/^iim" /></intent-filter></receiver>
また、path に関して /unread/^i と /unread/^iim の2種類が飛んでるのもググると出てきます。
ですが、arc はまさかの /unread/^iim のみなのでした。
通常Android2.3ですと、 /unread/^i が出てるはずなので、ずっとこれを拾っていました。
mimeType はずっと気付かないでいましたが、まぁこれは古いAndroid(2.1?)の話しなのでよしとします。
実際、HTC DesireHD をメインで開発していたのですが、/unread/^i で拾えます。
GalaxyNexusも拾えます。また、ユーザさんとやり取りした感触だと、arc以外の Xperia の皆さんも拾えていそうです。
なぜか、arc だけ /unread/^i は出ず、 /unread/^iim のみ出るようです。
(もしかしたらacroもなのかな???)
で、そんなこんながわかりましたので、全部拾ってみました。
すると、今度は通常 /unread/^i /unread/^iim 両方でてるので、2重に通知してしまう問題が勃発。(arc は^iim だけなので1回の通知になったのでしょうけれども。。。)
^i が拾えた端末では、 ^iim の通知は無視をするロジックをいれて、現在に至ります。
if ("^^unseen-^i".equals(extras.getString("tagLabel"))){
Editor e = mSharedPreferences.edit();
e.putBoolean("tagLabel", true);こんな感じ。。。。
e.commit();
Log.d("tagLabel ^i isTrue ");
}
if (mSharedPreferences.getBoolean("tagLabel", false)
&& "^^unseen-^iim".equals(extras.getString("tagLabel"))) {
Log.d("tagLabel ^iim && ^i isTrue ");return; // }
断片化たまらんわ、と言うお話でした。