双卡版本,在M,N版本之后都只是显示一个STK APP图标。但是联通规范要求双卡版本需要分开显示STK APP,也就是要显示两个STK APP图标
并且要求插卡式显示,拔卡时隐藏
MTK的机制是动态安装STK应用,插卡时安装,拔卡时卸载
打开OP02后联通定制版双卡时STK应用会由StkAppService动态安装app
vendor/mediatek/proprietary/packages/apps/Stk/
String optr = SystemProperties.get("ro.operator.optr");
if (optr != null && !("OP02".equals(optr))) {
appInstaller.unInstall(mContext, i);
}
两个SAT应用程序是共用一个packageName
private static final String STK1_LAUNCHER_ACTIVITY = "com.android.stk.StkLauncherActivityI";
private static final String STK2_LAUNCHER_ACTIVITY = "com.android.stk.StkLauncherActivityII";
switch (sim_id) {
case PhoneConstants.SIM_ID_1:
classname = STK1_LAUNCHER_ACTIVITY;
break;
case PhoneConstants.SIM_ID_2:
classname = STK2_LAUNCHER_ACTIVITY;
break;
两个应用同一个包名,这样的机制会影响其他模块
MTK做过适配,/vendor/mediatek/proprietary/operator/OP02/packages/apps/Plugins/
但适配的是MTK原生应用的,所以这里是注掉了
GNSPR#66307问题
主题原先也是通过包名区分,在显示ICON时有误,主题做了适配 通过包名+类名来区分
桌面也需要出一个CU适配版本,其他模块可能影响到的也要注意一下CU版本的STK应用
现在需要和桌面一起看一下,现在显示的很混乱,没有规律
参考
[FAQ19483][SAT]双卡情况下如何显示两个STK icon图标
[FAQ05657][SAT]如何动态修改SIM卡应用名称
并且要求插卡式显示,拔卡时隐藏
MTK的机制是动态安装STK应用,插卡时安装,拔卡时卸载
打开OP02后联通定制版双卡时STK应用会由StkAppService动态安装app
vendor/mediatek/proprietary/packages/apps/Stk/
String optr = SystemProperties.get("ro.operator.optr");
if (optr != null && !("OP02".equals(optr))) {
appInstaller.unInstall(mContext, i);
}
两个SAT应用程序是共用一个packageName
private static final String STK1_LAUNCHER_ACTIVITY = "com.android.stk.StkLauncherActivityI";
private static final String STK2_LAUNCHER_ACTIVITY = "com.android.stk.StkLauncherActivityII";
switch (sim_id) {
case PhoneConstants.SIM_ID_1:
classname = STK1_LAUNCHER_ACTIVITY;
break;
case PhoneConstants.SIM_ID_2:
classname = STK2_LAUNCHER_ACTIVITY;
break;
两个应用同一个包名,这样的机制会影响其他模块
MTK做过适配,/vendor/mediatek/proprietary/operator/OP02/packages/apps/Plugins/
但适配的是MTK原生应用的,所以这里是注掉了
GNSPR#66307问题
主题原先也是通过包名区分,在显示ICON时有误,主题做了适配 通过包名+类名来区分
桌面也需要出一个CU适配版本,其他模块可能影响到的也要注意一下CU版本的STK应用
现在需要和桌面一起看一下,现在显示的很混乱,没有规律
结论:
MTK 联通CU版 STK 应用 适配方案是 卡1 和卡2 分开显示,并且随着热插卡动态显示隐藏(联通规范要求),然后发送ACTION_PACKAGE_CHANGED广播,Launcher收到广播后做出隐藏或显示,
但是在发送广播时,我们的Launcher 无法区分卡1还是卡2,因为插拔卡会有几种情况的广播:
1开机后两张卡都插得,拔出卡1,如果卡2信号没初始化,那卡1就正常发一个广播,卡2 没变化 ,Launcher正常处理
2开机后两张卡都插得,拔出卡1,如果卡2信号初始化,两卡共执行一条隐藏广播,卡2在初始化完后再重新显示,发送卡2显示广播 ,Launcher收到广播后通过包名,再到从系统找类名,由于发送广播太多,Launcher无法区分
现在只能是通过克隆一份STK 代码 改为STK2 ,包名为com.android.stk2, 这样暂时解决
参考
[FAQ19483][SAT]双卡情况下如何显示两个STK icon图标
[FAQ05657][SAT]如何动态修改SIM卡应用名称