这可能是可能的,但谷歌已经确定这是不可能的。
我花了几个小时试图让它工作:
- 从我的 root 手机中提取了 Gmail.apk。
- 使用 apktools 反编译。
- 检查 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"
它们都没有意图过滤器,因此您无法调用它们。
如果你尝试你会得到
权限拒绝:从 ProcessRecord{40b7d248 26043:co.il.gmailresearch/10154}(pid =26043, uid=10154) 要求为空
也许可以使用 com.google.android.gm.ConversationListActivity。
但是代码必须被混淆,我没有费心去获取 Gmail.apk 的源代码来验证他们使用了哪些标志......
编辑:
好吧,好吧,我确实费心检查它,令人惊讶的是,谷歌并没有混淆他们的 Gmail 应用程序 :)
所以我能够得到APK的源代码。
做了一些挖掘,这就是我发现的......
相关的Activity是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);