アプリからGmailを扱う方法について

1,899 views
Skip to first unread message

84q

unread,
Oct 13, 2010, 2:28:20 PM10/13/10
to 日本Androidの会
初めまして、84qと言います。

現在Gmailを扱うアプリを開発中なのですが、AndroidでGmailの扱い方が分からないのでご存じの方がいたら教えていただきたいと思いメー
ルしました。
質問は以下の2点です。

1.同期したGmailの新着を(出来ればpollingではなくintentで)検知する。
2.検知したメールの情報を(from, subject等も)取得する。

以下はこれまでに試したことです。

A. Gmail受信時のlogcatを調査
------------------------------
I/Gmail (14059): Sending notification intent: Intent
{ act=android.intent.action.PROVIDER_CHANGED dat=content://gmail-ls/
unread/^i (has extras) }
------------------------------
android.intent.action.PROVIDER_CHANGED というintentが投げられていたのですが、受け取ることが出来ま
せん。
notification intentとは何でしょう?(通知バー関連でしょうか?)

B. GmailのContentsProviderの調査
http://d.hatena.ne.jp/iskwn/?of=5
上記サイトに[android.provider.Gmail]に提供されているとあったので該当のクラスを探しましたがすでに無くなっており、入手で
きませんでした。
どこか別のクラスに移動したのでしょうか?

C. permissionの調査
取得できないのはなんらかのpermissionが足りないのが原因ではないかと思い、関係ありそうなpermissionを調査しました。
------------------------------
com.google.android.gm.permission.READ_GMAIL
com.google.android.providers.gmail.permission.READ_GMAIL
com.google.android.googleapps.permission.GOOGLE_AUTH
android.permission.READ_PHONE_STATE
------------------------------
以下のpermissionを加えていますが今のところ進展はありません。
上の2つのREAD_GMAILの違いも分からず???な状況です。


以上です。
何か分かる方いましたらよろしくお願いします。

Isher

unread,
Oct 13, 2010, 3:13:44 PM10/13/10
to 日本Androidの会
こんにちは、石井です。
ちょうど似たような事をしてるので、分かってる範囲で書きます。

Androidに入っているGmailアプリは、メール着信時にintentを発行してくれるのですが、
ソースが未公開なので外部から色々探っていくしかありません。

A. まずはintentの受け取りですが、logcat通り「PROVIDER_CHANGED」で発行されてるのでreceiverで受け取れま
す。
Manifestの書き方は

<receiver android:name=".Receiver" android:label="receiver">
<intent-filter>
<action android:name="android.intent.action.PROVIDER_CHANGED" />
<data
android:scheme="content"
android:host="gmail-ls"
android:path="/unread/^i"
/>
</intent-filter>
</receiver>

これで受け取れると思いますがどうでしょうか。

B. GmailのContentsProviderは公開されてます。
Androidのソースの中の
./frameworks/base/core/java/android/provider/Gmail.java
こいつです。確か1.6辺りのソースを見てたので、最新の2.2とかだと違うかもしれません。
このproviderを使えば、メールの内容を見ることが出来ます。

C. パーミッションは知ってる限り、書かれてるもので大丈夫だと思います。



On 10月14日, 午前3:28, 84q <yuta84q.ihca...@gmail.com> wrote:
> 初めまして、84qと言います。
>
> 現在Gmailを扱うアプリを開発中なのですが、AndroidでGmailの扱い方が分からないのでご存じの方がいたら教えていただきたいと思いメー
> ルしました。
> 質問は以下の2点です。
>
> 1.同期したGmailの新着を(出来ればpollingではなくintentで)検知する。
> 2.検知したメールの情報を(from, subject等も)取得する。
>
> 以下はこれまでに試したことです。
>
> A. Gmail受信時のlogcatを調査
> ------------------------------
> I/Gmail (14059): Sending notification intent: Intent
> { act=android.intent.action.PROVIDER_CHANGED dat=content://gmail-ls/
> unread/^i (has extras) }
> ------------------------------
> android.intent.action.PROVIDER_CHANGED というintentが投げられていたのですが、受け取ることが出来ま
> せん。
> notification intentとは何でしょう?(通知バー関連でしょうか?)
>
> B. GmailのContentsProviderの調査http://d.hatena.ne.jp/iskwn/?of=5

84q

unread,
Oct 13, 2010, 9:19:34 PM10/13/10
to 日本Androidの会
石井さん
返信有り難うございます。

A. intentの受け取りについては教えていただいたコードで受け取れることを確認しました!

B. ちょうど1.5と2.2のソースがあったので比較してみたところ1.5のソースにはGmail.javaがありましたが、2.2のソースからは無
くなっていました。
もう少し調べてみることにします。
別の場所に移っていた場合、1.5のGmail.javaを用いて作成したコードは2.2では動かないと言うことなのでしょうか?

C. これについては確認するのはBが解決してからになりそうです。

以上です。
まずはAが分かったことで前進できそうです。
的確な解答有り難うございました。

84q

unread,
Oct 13, 2010, 9:19:46 PM10/13/10
to 日本Androidの会
石井さん
返信有り難うございます。

A. intentの受け取りについては教えていただいたコードで受け取れることを確認しました!

B. ちょうど1.5と2.2のソースがあったので比較してみたところ1.5のソースにはGmail.javaがありましたが、2.2のソースからは無
くなっていました。
もう少し調べてみることにします。
別の場所に移っていた場合、1.5のGmail.javaを用いて作成したコードは2.2では動かないと言うことなのでしょうか?

C. これについては確認するのはBが解決してからになりそうです。

以上です。
まずはAが分かったことで前進できそうです。
的確な解答有り難うございました。

On 10月14日, 午前4:13, Isher <mata...@gmail.com> wrote:
Reply all
Reply to author
Forward
0 new messages