我正在尝试以编程方式在Android上的Gmail应用中打开单个电子邮件.
我知道可以这样做,因为内置的通知会在您点击它们时向您发送消息,并且市场上有一个名为Gmail Notifier的应用程序也可以执行此操作.
到目前为止我尝试过的:
- 使用消息URI作为数据发送ACTION_VIEW意图(失败 - 无法解析URI)
- 发布在Gmail包中打开HtmlConversationActivity的意图(失败 - "需要权限:null")
是否有助于为意图添加标志或类别?如果是的话,哪一个?
我知道Gmail应用程序没有详细记录,但它让我很生气,确实有一种方法可以做到这一点,我无法弄明白!
PS:这是我第一次在stackoverflow上发帖,所以如果我忽略了任何约定,我会提前道歉.
这可能是可能的,但谷歌已经确定它是不可能的.我花了几个小时试图让它工作:
2活动似乎对它有用:
activity android:theme="@android:style/Theme.Light.NoTitleBar"
android:label="@string/activity_conversation"
android:name="HtmlConversationActivity"
android:configChanges="keyboardHidden|orientation"
Run Code Online (Sandbox Code Playgroud)
和
activity android:label="@string/activity_search" android:name="SearchActivity"
Run Code Online (Sandbox Code Playgroud)
它们都没有意图过滤器,因此您无法调用它们.如果你尝试,你会得到
权限拒绝:从ProcessRecord {40b7d248 26043:co.il.gmailresearch/10154}启动Intent {act = android.intent.action.VIEW flg = 0x10000000 cmp = com.google.android.gm/.HtmlConversationActivity}(pid = 26043, uid = 10154)需要null
可以使用com.google.android.gm.ConversationListActivity.但代码必须混淆,我没有费心去获取Gmail.apk的源代码来验证他们使用哪些标志......
编辑:好吧我确实懒得检查它,令人惊讶的是谷歌没有混淆他们的Gmail应用程序:)所以我能够获得APK的源代码.做了一些挖掘,这就是我发现的......
相关活动是ConverstaionListActivity.
在Manifest.xml中,它有这个intent过滤器:
动作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";
Run Code Online (Sandbox Code Playgroud)
无论如何.按钮行,您无法打开特定的会话.但您可以传递一个搜索查询,该查询仅显示用户拥有的所有邮件中的特定会话.
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2582 次 |
| 最近记录: |