本文的封面图来源于Pixiv,原作者是潘潘没有Hp

此方法本质上是恢复页面入口,而非保证服务端功能仍可用。不同版本应用的效果可能存在差异。

本文方法与小米社区上的教程所描述的操作一致,原文由靠墙的钴-60撰写。本文加入了自行探究的过程。

方法

  1. 在「小爱课程表」下方的导航栏中点击最右边的头像,进入设置。然后滑动至最下方,连续点击5次空白处,即图中的红框位置,进入Debug页面。
  2. 下滑,启用「vConsole」选项,然后点击右下角绿色的按钮。
  3. 在下方红框所示的command中输入window.location.hash='/import',并按右侧的「OK」。
  4. 这时页面会跳转到「教务导入」界面,可点击下方的「Hide」隐藏vConsole界面。
  5. 若要隐藏右下角的「vConsole」按钮,可以重新按照第1步进入Debug页面,随后禁用vConsole选项。

探究

明天就要开学了。小米「超级小爱」中的「小爱课程表」很实用,不仅比学校的课程表更直观,还会在上课前提醒。不过,今天准备导入课程表时,发现「教务系统导入」功能被关闭,说是产品技术方案调整,建议使用拍照导入。据小米社区一篇贴文所述,这个功能在今年4月份就已经下线了。这个功能挺好的,我不能理解为何要下线。可能是因为获取了第三方网站的数据?然而,作为替代方案的拍照导入却不尽人意,我尝试了几次,都是识别失败。

提示功能即将下线

说实话,我一开始并没有什么思路。不过考虑到,课程表只能在线使用,并且在「超级小爱」中似乎并未找到相关活动,因此我觉得这个功能是单页应用。我还推测,教务导入只是禁用了入口,相关页面应该仍可打开,应该没有做其他校验。我先是尝试用Chromium对应用的WebView做远程调试,但并未找到相关进程,可能是生产版未启用相关配置。随后我便使用apktool静态解包,并在其中搜索关键词「课程表」,于h5_pad_config.json文件中发现了这样的配置:

1
2
3
4
{
"path": "/h5/precache/ai-schedule/",
"des": "课程表"
},

我猜这里的path应该是网页路径的一部分,但需要找到完整路径。随后查找ai-schedule,发现设置界面所对应的页面为https://i.xiaomixiaoai.com/h5/precache/ai-schedule/#/setting。「教务导入」与「设置课程背景」应该类似,都是打开了新界面,而后者能正常使用;点击时,路由会更改为/choose-bg。我想,「教务导入」应该也是一个新的路由,只要找到就万事大吉。因此,我在浏览器的调试器中搜索/choose-bg,发现以umi开头的某一js脚本中写了按钮与路由的映射关系。虽然没能直接找到路由,但我观察到「通过分享导入课表」的按钮路由为/import,此外还有一些路由是以import_开头。我想「教务导入」的路由多少会与import相关,便开始尝试。第一次即尝试了/import,运气很好,直接进入了「教务导入」页面。

下一个关键的问题是,如何在「超级小爱」中打开这个页面呢?我想,应用中应该有类似于浏览器Console的东西。在小米社区搜索时,发现小爱课程表中可以使用vConsole,而相关推荐中即有靠墙的钴-60所提到的操作方法,与我的想法不谋而合。按其方法操作,能够打开「教务导入」页面。