54-Android之Stk无内容图标不显示

本文档详细分析了Android系统中关于STK(SIM Toolkit)应用在无内容时仍然显示图标的问题,并提供了相应的代码修改方案。在特定条件下,当SIM卡无STK内容时,代码将不再显示STK应用图标,从而满足客户需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

54-Android之Stk无内容图标不显示

平台: Android10 MTK6739

客户发现,某些SIM卡插入设备的时候,会显示Stk应用的图标,但是点击Stk应用图标,会提示无内容,不会打开Stk应用。

因此,客户要求当Stk无内容时,不要显示Stk应用图标。

vendor/mediatek/proprietary/packages/apps/Stk/src/com/android/stk/StkAppService.java

    private void handleCmd(MtkCatCmdMessage cmdMsg, int slotId) {
	//..... 省略
        switch (cmdMsg.getCmdType()) {
        //..... 省略
        case SET_UP_MENU:
	    // ......
            mStkContext[slotId].mCmdInProgress = false;
            mStkContext[slotId].mMainCmd = mStkContext[slotId].mCurrentCmd;
            mStkContext[slotId].mCurrentMenuCmd = mStkContext[slotId].mCurrentCmd;
            mStkContext[slotId].mCurrentMenu = cmdMsg.getMenu();
   	    // ......
            if (removeMenu(slotId)) {
                int i = 0;
                mStkContext[slotId].mCurrentMenu = null;
                mStkContext[slotId].mMainCmd = null;
                appInstaller.unInstall(mContext, slotId);
                StkAvailable(slotId, STK_AVAIL_NOT_AVAILABLE);

                //Check other setup menu state. If all setup menu are removed, uninstall apk.
                for (i = PhoneConstants.SIM_ID_1; i < mSimCount; i++) {
                    if (i != slotId && mStkContext[i].mSetupMenuState != STATE_NOT_EXIST) {
                        break;
                    }
                }
                if (i == mSimCount) {
                    //appInstaller.unInstall(mContext);
                }
            } else if (!sim_radio_on || sim_locked) {
      		// ......
                StkAvailable(slotId, STK_AVAIL_NOT_AVAILABLE);
            } else {
                // 此处添加 begin
	                if (MtkCatService.getSaveNewSetUpMenuFlag(slotId) &&
	                	mStkContext[slotId].mMainCmd != null &&
	                	isMenuValid(mStkContext[slotId].mMainCmd.getMenu())) {
	                	LogUtils.d(LOG_TAG, "SET_UP_MENU AppInstaller.install");
	                	appInstaller.install(mContext, slotId);
	                	StkAvailable(slotId, STK_AVAIL_AVAILABLE);
	                }
                // 此处添加 end
            }
            if (mStkContext[slotId].mMenuIsVisible) {
    		//......
                launchMenuActivity(null, slotId, false);
            }
            break;
        //...... 省略
    }

    private void updateStkState(int subId, int imsRadioTech){
        StkAppInstaller appInstaller = StkAppInstaller.getInstance();
        switch(imsRadioTech)
        {
            case ImsRegistrationImplBase.REGISTRATION_TECH_LTE:
            case ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN:
                // 此处添加 begin
            	if (MtkCatService.getSaveNewSetUpMenuFlag(subId) &&
                        mStkContext[subId].mMainCmd != null &&
                        isMenuValid(mStkContext[subId].mMainCmd.getMenu())) {
            	        LogUtils.d(LOG_TAG, "updateStkState AppInstaller.install subId: " + subId + ", imsRadioTech: " + imsRadioTech);
	                appInstaller.install(mContext, subId);
	                StkAvailable(subId, STK_AVAIL_AVAILABLE);
            	}
            	// 此处添加 end
                break;
            default:
                if(isAirplaneModeOn(mContext)) {
                    appInstaller.unInstall(mContext, subId);
                    StkAvailable(subId, STK_AVAIL_NOT_AVAILABLE);
                }
                break;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值