Как открыть конкретное сообщение / разговор в приложении Gmail - PullRequest
8 голосов
/ 29 августа 2010

Я пытаюсь программно открыть отдельное письмо в приложении Gmail на Android.

Я знаю, что это можно сделать, потому что встроенные уведомления отправляют вам сообщение, когда вы нажимаете на них, и на рынке есть приложение под названием Gmail Notifier, которое также делает это.

Что я пробовал до сих пор:

- отправить намерение ACTION_VIEW с URI сообщения как данные (не удалось - не удается разрешить URI)

- отправить намерение открыть HtmlConversationActivity в пакете Gmail (не удалось - «требуется разрешение: пусто»)

Поможет ли добавить к цели флаги или категорию? Если да, то какие?

Я знаю, что приложение Gmail плохо документировано, но меня бесит, что определенно есть способ сделать это, и я просто не могу понять это!

P.S .: Это первый раз, когда я публикую сообщения в stackoverflow, поэтому я заранее извиняюсь, если проигнорировал какие-либо соглашения.

Ответы [ 2 ]

8 голосов
/ 05 июня 2012

Это может быть возможно, но Google позаботился о том, чтобы это было невозможно. Я потратил пару часов, пытаясь заставить его работать:

  1. Вытащил Gmail.apk из моего рутированного телефона.
  2. Декомпилировал его с помощью apktools.
  3. Перешел через manifest.xml

2 Видимо, для этого полезны действия:

activity android:theme="@android:style/Theme.Light.NoTitleBar" 
         android:label="@string/activity_conversation" 
         android:name="HtmlConversationActivity" 
         android:configChanges="keyboardHidden|orientation"

и

activity android:label="@string/activity_search" android:name="SearchActivity" 

У них обоих нет фильтров намерений, поэтому вы не можете их вызвать. Если вы попробуете, вы получите

Отказ в разрешении: начало намерения = 26043, uid = 10154) требуется ноль

Это может быть возможно при использовании com.google.android.gm.ConversationListActivity. Но код должен быть запутан, и я не удосужился получить исходный код Gmail.apk, чтобы проверить, какие флаги они используют ...

EDIT: Хорошо, хорошо, я потрудился проверить это, и достаточно удивительно, что Google не запутал их приложение Gmail :) Таким образом, я смог получить исходный код APK. Покопался и вот что нашел ...

Соответствующим действием является ConverstaionListActivity.

В файле Manifest.xml есть этот фильтр намерений:

action android: name = "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);
1 голос
/ 29 августа 2010

Я пытаюсь программно открыть отдельное письмо в приложении Gmail на Android.

Нет документированных и поддерживаемых Intents для работы с приложением Gmail.Разработчики не должны тесно интегрироваться с этим приложением - если бы Google хотела такую ​​интеграцию, они бы документировали и поддерживали такую ​​интеграцию, как они это делали с контактами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...