我正在尝试在Android的Gmail应用中以编程方式打开单个电子邮件。
我知道这是可以做到的,因为当您单击内置通知时,内置通知就会向您发送消息,并且市场上有一个名为Gmail Notifier的应用程序也可以做到。
到目前为止,我已经尝试过:
-发送带有消息URI作为数据的ACTION_VIEW Intent (失败-无法解析URI)
-发送 Intent 以在Gmail软件包中打开HtmlConversationActivity(失败-“需要权限:空”)
向目标添加标志或类别是否有帮助?如果是这样,哪一个?
我知道Gmail应用程序的文档记录不充分,但是它让我发疯了,因为肯定有一种方法可以做到这一点,而我只是想不通!
附注:这是我第一次在stackoverflow上发帖,因此如果我忽略了任何约定,我事先表示歉意。
最佳答案
有可能,但谷歌已确保这将是不可能的。
我花了几个小时试图使其工作:
2 Activity 似乎对此很有用:
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"
它们都没有 Intent 过滤器,因此您不能调用它们。
如果尝试,您会得到
可能可以使用com.google.android.gm.ConversationListActivity。
但是必须对代码进行混淆,并且我不必费心去获取Gmail.apk的源代码来验证它们使用了哪些标志...
编辑:
好吧,我很乐意检查它,而且令人惊讶的是Google并没有混淆他们的Gmail应用程序:)
这样我就能获得APK的源代码。
做了一些挖掘,这就是我发现的...
相关的 Activity 是ConverstaionListActivity。
在Manifest.xml中,它具有以下 Intent 过滤器:
当我检查该 Activity 的代码时,我发现有3个期望的字符串可以作为额外的字符串:
public static final String EXTRA_LABEL = "label";
public static final String EXTRA_SEARCH = "search";
public static final String EXTRA_TITLE = "title";
无论如何。按钮行,则无法打开特定的对话。但是您可以通过搜索查询,该查询仅显示用户所有邮件中的特定 session 。
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);
关于android - 如何在Gmail应用程序中打开特定的邮件/ session ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3592745/