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

来源:互联网 发布:手机一玩游戏网络就卡 编辑:程序博客网 时间:2024/06/02 07:46

今天遇到一个问题就是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