bug1 解决sim stk的标题显示问题

今天遇到一个问题就是sim卡插入希望能在stk显示相应的运营商信息

首先追踪sim stk是怎么install的

首先在AndroidManifest.xml里看到有三个activity

<span style="font-size:18px;"><activity android:name="StkLauncherActivity"
            android:label="@string/app_name"
            android:taskAffinity="android.task.StkLauncherActivity"
            android:enabled="false">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name="StkLauncherActivity2"
            android:label="@string/app_name2"
            android:taskAffinity="android.task.StkLauncherActivity2"
            android:enabled="false" >
            <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name="StkLauncherActivity3"
            android:label="@string/app_name3"
            android:taskAffinity="android.task.StkLauncherActivity3"
            android:enabled="false" >
            <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity></span>
这三个就是插卡的时候启动的activity,然后找在哪里启动

在StkAppInstaller.java里

<span style="font-size:18px;"> static void install(Context context, int slotId) {
        setAppState(context, true, slotId);
    }
</span>

<span style="font-size:18px;">  private static void setAppState(Context context, boolean install, int slotId) {
        if (context == null) {
            return;
        }
        PackageManager pm = context.getPackageManager();
        if (pm == null) {
            return;
        }
        ComponentName cName;
        String[] launcherActivity = {
            "com.android.stk.StkLauncherActivity",
            "com.android.stk.StkLauncherActivity2",
            "com.android.stk.StkLauncherActivity3"
        };
        // check that STK app package is known to the PackageManager
        cName = new ComponentName("com.android.stk",
                    launcherActivity[slotId]);

        int state = install ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
                : PackageManager.COMPONENT_ENABLED_STATE_DISABLED;

        try {
            pm.setComponentEnabledSetting(cName, state,
                    PackageManager.DONT_KILL_APP);
        } catch (Exception e) {
            CatLog.d("StkAppInstaller", "Could not change STK app state");
        }
    }</span>
这样看来stk的标题是写死的只能增加两个activity,功能相同,唯一的区别就是 android:label="@string/app_name"变一下

然后根据sim卡信息来选择

sim卡信息查询PhoneFactory.java里

<span style="font-size:18px;">  if (phoneType == PhoneConstants.PHONE_TYPE_GSM) {
                        phone = new GSMPhone(context,
                                sCommandsInterfaces[i], sPhoneNotifier, i);
                    } else if (phoneType == PhoneConstants.PHONE_TYPE_CDMA) {
                        phone = new CDMALTEPhone(context,
                                sCommandsInterfaces[i], sPhoneNotifier, i);
                    }</span>
这样就可以解决这个问题,虽然比较傻,哈哈




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值