2010-08-28 22 views
6

我試圖以編程方式在Android上的Gmail應用程序中打開單個電子郵件。如何在Gmail應用程序中打開特定消息/對話

我知道可以這樣做,因爲內置通知會在您點擊它們時發送給您一條消息,市場上有一個名爲Gmail Notifier的應用程序也可以完成此操作。

我試過到目前爲止:

- 發送一個ACTION_VIEW意圖與消息URI數據(失敗 - 無法解析URI)

- 發送一個意圖在Gmail中包開HtmlConversationActivity(失敗 - 「需要權限:空」)

它會幫助添加標誌或類別的意圖?如果是這樣,哪一個?

我知道Gmail應用程序沒有很好的記錄,但它讓我生氣,肯定有辦法做到這一點,我只是無法弄清楚!

P.S .:這是我第一次發佈在stackoverflow上,所以如果我忽略了任何約定,我都會提前道歉。

回答

8

這可能是可能的,但谷歌已確保它不可能。 我花了幾個小時,試圖使其工作:

  1. 從我紮根電話拉到Gmail.apk。
  2. 使用apktools反編譯。
  3. 走過去的manifest.xml

2活動似乎它是有用的:

活動的android:主題= 「@安卓風格/ Theme.Light.NoTitleBar」 機器人:標籤= 「@字符串/ activity_conversation」 機器人:名字= 「HtmlConversationActivity」 機器人:configChanges = 「keyboardHidden |定位」

活動機器人:標籤=「@字符串/ activity_search」機器人:名字=「SearchActivity」

他們兩人都沒有意圖過濾器,所以你不能給他們打電話。 如果你嘗試,你會得到

權限拒絕:開始從ProcessRecord {40b7d248 26043意圖行事{= android.intent.action.VIEW FLG = 0x10000000的CMP = com.google.android.gm/.HtmlConversationActivity}: co.il.gmailresearch/10154}(pid = 26043,uid = 10154)要求爲空

可能使用com.google.android.gm.ConversationListActivity。 但必須對代碼進行混淆,我沒有刻意去獲得Gmail.apk的源代碼,以驗證他們使用的標誌......

編輯: 好吧好吧,我也懶得去檢查它,和令人驚訝足夠谷歌沒有混淆他們的Gmail應用程序:) 所以我能夠得到APK的源代碼。 做了一些挖掘,這是我發現的...

相關的活動是ConverstaionListActivity。

在manifest.xml它有這個意圖過濾器:

動作機器人:名稱= 「android.intent.action.SEARCH」/>

正如我檢查的代碼爲活動我發現有3個預期的字符串得到額外的:

public static final String EXTRA_LABEL = "label"; 
public static final String EXTRA_SEARCH = "search"; 
public static final String EXTRA_TITLE = "title"; 

反正。按鈕行,您無法打開特定對話。但是您可以傳遞一個搜索查詢,該搜索查詢將僅顯示用戶擁有的所有郵件中的特定對話。

Intent mailClient = new Intent(Intent.ACTION_SEARCH); mailClient.setClassName("com.google.android.gm", "com.google.android.gm.ConversationListActivity"); mailClient.putExtra("query", "15 Apps for Programming");
startActivity(mailClient);

+2

這似乎不工作了。我剛剛嘗試過。有沒有人有過這方面的成功? – Enigma 2012-09-24 11:03:13

+0

是的這不工作了... – 2017-12-16 07:31:26

1

我試圖以編程方式在Android上的Gmail應用程序中打開單個電子郵件。

對於使用Gmail應用程序,沒有文檔記錄和支持Intents。開發人員不應該與此應用程序緊密集成 - 如果谷歌希望進行這種集成,他們將記錄和支持這種集成,就像他們在聯繫人中所做的那樣。

+3

我就知道你會這麼說,但如果我公司想告訴我什麼,我允許做,我會做的應用程序的iPhone! 我的觀點是,它可以完成,知道如何很好。我願意接受這樣的風險,即有一天我的應用程序將停止工作,並且我的特定應用程序的收入將降至零(我銷售的應用程序不止一個)。 – katzoft 2010-08-29 10:57:40

+0

嗨@CommonsWare,我知道這是非常古老的線程,但無論如何,現在打開特定消息的意圖 - 一天。 – 2017-12-16 07:21:05

+0

@NiteshSingh:因爲我不知道你的應用程序如何爲特定的電子郵件提供標識符,所以我無法回答。 – CommonsWare 2017-12-16 11:28:49

相關問題