[FAQ19483][SAT]双卡情况下如何显示两个STK icon图标

xiaoxiao2021-02-28  109

[DESCRIPTION]        对于双卡版本,在M,N版本之后都只是显示一个STK APP图标。但是有一些运营商要求双卡版本需要分开显示STK APP,也就是要显示两个STK APP图标。   [SOLUTION]         对于显示两个STK APP图标主要有如下几个步骤可供参考:       1, 参考cu版本修改 AndroidManifest.xml, 主要是为了在manifest中配置双卡的stk app.       例如可以  /vendor/mediatek/proprietary/packages/apps/Stk/cu/AndroidManifest.xml  修改为: /vendor/mediatek/proprietary/packages/apps/Stk/AndroidManifest.xml         2, startPollingIccid修改install SIM1和SIM2 (StkAppService.java )       主要是为了instal双卡stk app。        demo code例如:         /vendor/mediatek/proprietary/packages/apps/Stk/src/com/android/stk/StkAppService.java [Java] hide 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 private void startPollingIccId() {         4304 // Install StkMain by default   4305 if (- 1 == appInstaller.getIsInstalled(appInstaller.STK_LAUNCH_ID)) {   4306 appInstaller.install(mContext, appInstaller.STK_LAUNCH_ID);   4307 SystemClock.sleep( 100 );   4308 }   4309   4310 for (simIdx = PhoneConstants.SIM_ID_1; simIdx < mSimCount; simIdx++) {   4311 CatLog.d(LOG_TAG, "mIccId[" + simIdx + "]: " + mIccId[simIdx]);   4312 if (ICCID_STRING_FOR_NO_SIM.equals(mIccId[simIdx])) {   4313 appInstaller.unInstall(mContext, simIdx);   4314 StkAvailable(simIdx, STK_AVAIL_NOT_AVAILABLE);   4315 mStkContext[simIdx].mIccCardState = 0 ;   4316 } else {   4317 if ((mIccId[simIdx] != null ) || false == ( "" .equals(mIccId[simIdx]))) {   4318 // If any mIccId[] is valid, install StkMain   4319 if (appInstaller.STK_NOT_INSTALLED ==   4320 appInstaller.getIsInstalled(appInstaller.STK_LAUNCH_ID)) {   4321 appInstaller.install(mContext, appInstaller.STK_LAUNCH_ID);   4322 }   4323 mStkContext[simIdx].mIccCardState = 1 ;   4324 }   4325 }   4326 }  修改为: [Java] hide 1 2 3 appInstaller.install(mContext, PhoneConstants.SIM_ID_1);   appInstaller.install(mContext, PhoneConstants.SIM_ID_2);         如上两个步骤已经实现显示两个stk app,但是无卡情况下是会被uninstall的,因此如果需要在无卡情况下也显示icon,需要继续修改步骤3.       3, 修改在收到SIM STATE CHANGE广播后避免被uninstall.       demo code例如如下:  /vendor/mediatek/proprietary/packages/apps/Stk/src/com/android/stk/BootCompletedReceiver.java 第一处修改: [Java] hide 1 2 3 4 5 6 7 8 9 10 11   282 if (appService != null ) {   283 int currentState = appService.StkQueryAvailable(SIMID);   284 CatLog.d(LOG_TAG, "[ACTION_SIM_STATE_CHANGED][bUnInstall] : " + bUnInstall + ", currentState: " + currentState);   285 if (bUnInstall && app_state == StkAppInstaller.STK_INSTALLED) {   修改为: [Java] hide 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15   /   282 if (appService != null ) {   283 int currentState = appService.StkQueryAvailable(SIMID);   284 CatLog.d(LOG_TAG, "[ACTION_SIM_STATE_CHANGED][bUnInstall] : " + bUnInstall + ", currentState: " + currentState);     bUnInstall = false ;     CatLog.d(LOG_TAG, "[ACTION_SIM_STATE_CHANGED][bUnInstall] : force to install STK app bUnInstall = false." );   285 if (bUnInstall && app_state == StkAppInstaller.STK_INSTALLED) {      /vendor/mediatek/proprietary/packages/apps/Stk/src/com/android/stk/BootCompletedReceiver.java 第二处修改: [Java] hide 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 260 } else if ((IccCardConstants.INTENT_VALUE_ICC_ABSENT).equals(SIMStatus)) {   261 CatLog.d(LOG_TAG, "SIM_ABSENT, removed sim: " + SIMID);   262 /*For OP02 spec v4.1 start*/   263 String optr = SystemProperties.get( "ro.operator.optr" );   264 if (optr != null && "OP02" .equals(optr)) {   265 SystemProperties.set(   266 INSTALL_STK_IF_FLIGHT_MODE_ON_PROPERTY[SIMID], "0" );   267 }   268 Bundle args = new Bundle();   269 args.putInt(StkAppService.OPCODE, StkAppService.OP_REMOVE_STM);   270 args.putInt(StkAppService.SLOT_ID, SIMID);   271 context.startService( new Intent(context, StkAppService. class ).putExtras(args));   272 } else {  修改为: [Java] hide 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 260 } else if ((IccCardConstants.INTENT_VALUE_ICC_ABSENT).equals(SIMStatus)) {   261 CatLog.d(LOG_TAG, "SIM_ABSENT, removed sim: " + SIMID);   262 /*For OP02 spec v4.1 start*/   263 String optr = SystemProperties.get( "ro.operator.optr" );   264 if (optr != null && "OP02" .equals(optr)) {   265 SystemProperties.set(   266 INSTALL_STK_IF_FLIGHT_MODE_ON_PROPERTY[SIMID], "0" );   267 }   // Bundle args = new Bundle();   // args.putInt(StkAppService.OPCODE, StkAppService.OP_REMOVE_STM);   // args.putInt(StkAppService.SLOT_ID, SIMID);   // context.startService(new Intent(context, StkAppService.class).putExtras(args));   272 } else {
转载请注明原文地址: https://www.6miu.com/read-82498.html

最新回复(0)