Android 如何在Gmail应用程序中打开特定消息/对话
我试图在Android上的Gmail应用程序中以编程方式打开一封单独的电子邮件 我知道这是可以做到的,因为当你点击内置的通知时,它会向你发送一条消息,而市场上有一款叫做Gmail Notifier的应用程序也能做到这一点 到目前为止,我所尝试的: -以消息URI作为数据发送操作\视图意图(失败-无法解析URI) -发送在Gmail包中打开HtmlConversationActivity的意图(失败-“需要权限:null”) 在意向中添加标志或类别是否有帮助?如果有,哪一个 我知道Gmail应用程序并没有很好的文档记录,但它让我抓狂,因为肯定有办法做到这一点,我就是想不出来 这是我第一次在stackoverflow上发帖,所以如果我忽略了任何惯例,我会提前道歉 我试图在Android上的Gmail应用程序中以编程方式打开一封单独的电子邮件Android 如何在Gmail应用程序中打开特定消息/对话,android,Android,我试图在Android上的Gmail应用程序中以编程方式打开一封单独的电子邮件 我知道这是可以做到的,因为当你点击内置的通知时,它会向你发送一条消息,而市场上有一款叫做Gmail Notifier的应用程序也能做到这一点 到目前为止,我所尝试的: -以消息URI作为数据发送操作\视图意图(失败-无法解析URI) -发送在Gmail包中打开HtmlConversationActivity的意图(失败-“需要权限:null”) 在意向中添加标志或类别是否有帮助?如果有,哪一个 我知道Gmail应用程
对于使用Gmail应用程序,没有记录和支持的
意图。开发者不应该与这个应用程序紧密集成——如果谷歌想要这样的集成,他们会记录并支持这样的集成,就像他们对联系人所做的那样。这可能是可能的,但谷歌已经确保这是不可能的。
我花了几个小时试图让它工作:
从我的手机中取出Gmail.apk
使用apktools反编译它
检查manifest.xml
2项活动似乎对it有用:
activity android:theme="@android:style/Theme.Light.NoTitleBar"
android:label="@string/activity_conversation"
android:name="HtmlConversationActivity"
android:configChanges="keyboardHidden|orientation"
及
它们都没有意图过滤器,因此您无法调用它们。
如果你尝试,你会得到更多
权限拒绝:从ProcessRecord{40b7d248 26043:co.il.gmailresearch/10154}(pid=26043,uid=10154)启动Intent{act=android.Intent.action.VIEW flg=0x10000000 cmp=com.google.android.gm/.HtmlConversationActivity}需要空值
可以使用com.google.android.gm.ConversationListActivity。
但是代码必须是模糊的,我没有费心去获取Gmail.apk的源代码来验证他们使用了哪些标志
编辑:
好吧,好吧,我确实费心检查了一下,令人惊讶的是,谷歌没有混淆他们的Gmail应用程序:)
所以我能够得到APK的源代码。
做了一些挖掘,这就是我发现的
相关的活动是对话性活动
在Manifest.xml中,它具有以下意图过滤器:
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);
我知道你会这么说,但如果我想让一家公司告诉我我可以做什么,我会为iPhone制作应用程序!我的观点是,这是可以做到的,知道怎么做会很好。我愿意接受这样的风险:有一天我的应用程序将停止工作,我从该应用程序中获得的收入将降至零(我正在销售多个应用程序)。嘿@commonware,我知道这是一条非常古老的线索,但是,是否每天都有打开特定邮件的意图。@尼特辛:因为我不知道你的应用程序如何具有特定电子邮件的标识符,所以我无法回答。@Commonware,我有邮件Id和线程Id,我是用Gmail API获取的。@NiteshSingh:联系谷歌,询问他们是否有一个文档化的、受支持的
可以处理这些信息。我不使用Gmail,也不将应用程序连接到Gmail。这似乎不再有效。我刚试过。有人在这方面取得过成功吗?
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);