版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ch_xin/article/details/8364080
问题:定制了四个MRE的pre-link的app,默认要在idle上显示,编译后无效,所增加的app并不能在idle上显示出现
回答:
现加入到那个table无法生效的原因查明。
是因为在这个表格中,我们会将app name转换成一个id,可以看到API srv_appmgr_get_id_by_app_package_name的调用。
但是在开机的过程中,s_preInstallTbl这个表是一开始就要初始化。但 MRE app info还没有来得及加载。
即g_mre_appmgr_maptable这个表的信息来没来得及写进去。所以我们get到的app id是无效值,自然shortcut无法创建。
请按下面方式来预置:
请覆盖下面这两个虚函数,我这里的例子只预制了一个,如果你要预制多个,请修改相应的数目.
VfxS32 VappWidgetShortcutFactory::getPreInstalledNum() const
{
return 4;
}
VfxS32 VappWidgetShortcutFactory::getPreInstalledWidget(
VappWidgetPreInstalled **preInstalled,
VfxS32 size) const
{
preInstalled[0]->m_id.assignWith(VAPP_WIDGET_SRC_SHORTCUT, srv_appmgr_get_id_by_app_package_name("mre.vxp.M Bounce Limited.Facebook"));
preInstalled[0]->m_pageIdx = 2;
preInstalled[0]->m_pos = VfxPoint(0, 300);
preInstalled[1]->m_id.assignWith(VAPP_WIDGET_SRC_SHORTCUT, srv_appmgr_get_id_by_app_package_name("mre.shortcut.65860"));
preInstalled[1]->m_pageIdx = 2;
preInstalled[1]->m_pos = VfxPoint(80, 300);
preInstalled[2]->m_id.assignWith(VAPP_WIDGET_SRC_SHORTCUT, srv_appmgr_get_id_by_app_package_name("mre.vxp.Mediatek Inc..Y! Messenger"));
preInstalled[2]->m_pageIdx = 2;
preInstalled[2]->m_pos = VfxPoint(160, 300);
preInstalled[3]->m_id.assignWith(VAPP_WIDGET_SRC_SHORTCUT, srv_appmgr_get_id_by_app_package_name("mre.vxp.General Mobile.Cherry app"));
preInstalled[3]->m_pageIdx = 2;
preInstalled[3]->m_pos = VfxPoint(240, 300);
return 4;
}