您的位置:首页 > 移动开发 > Android开发

Stk相关

2017-03-09 10:40 106 查看

Stk概述

SIM Card Tool Kit; 指SIM卡开发工具包;

如果是USIM卡,简称USIM。Stk的代码程序是写在SIM卡上的,所以Stk.apk完成的功能就是和卡程序通信。以Sim卡的容量大小可以想到stk的功能是比较弱的,最常见的stk功能应该就是开机的时候弹出的“欢迎使用联通”字样之类的dialog框,还有号簿管家,打开移动wap网络主页等等功能。
Stk的主界面和子界面全部是list,点击listitem发送相应命令到modem,依据modem回应做各种处理.例如要进子列表就加载子列表展示,是要显示某些信息就弹对话框提示,要输入某些东西就弹出输入框,要发送短信则直接使用framework层的类直接发送短信,要显示一个网页就跳转到浏览器。实际上modem的交互就是一个应答模式,通过at命令一问一答,stk只不过是提供一个UI方式供用户操作。每个命令的处理有超时时间,一般是30秒,超时没有应答后一般动作是返回上一层。

app代码简介

mtk的stk app代码在,注意不是packages/apps/Stk,高通的好像还使用原生的位置:

/home/lgy/code/mtk6797/vendor/mediatek/proprietary/packages/apps/Stk

<application android:icon="@drawable/ic_launcher_sim_toolkit"
android:label="@string/app_name"
android:clearTaskOnLaunch="true"
android:process="com.android.phone"
android:taskAffinity="android.task.stk">AndroidManifest中可看到进程是运行在com.android.phone中,因为要使用telephony framework的代码。
StkAppInstaller

插入卡的时候显示stk,拔出卡的时候桌面不显示stk,这个功能是在StkAppInstaller中完成的:

private static void setAppState(Context context, boolean install, int sim_id) {
...
PackageManager pm = context.getPackageManager();
...
pm.setComponentEnabledSetting(cName, state, PackageManager.DONT_KILL_APP);
...
}使用PackageManager 的方法可以开启和禁用app,禁用后当然在桌面不显示,不仅不显示实际上被禁用的app代码都无法运行(就和没有安装apk一个表现)。这个实际上就是n多系统管家超级省电模式的原理。
StkAppService

stk中最核心的类,其余类都在该类的管理之下

StkCmdReceiver

StkAppService中使用,收stk相关广播

StkDialogActivity

对话框样式的Activity,用于弹出提示。例如开机弹框就是这个。

StkInputActivity

输入框样式的Activity,用于输入一些东西

StkMenuActivity

stk的界面,因为stk的所有UI都是一个列表,所以可以做成一个通用的activity。

framework代码简介

frameworks/opt/telephony/src/java/com/android/internal/telephony/cat/

吐槽

对stk的代码基本没任何分析,因为这个实在是没啥好说的。作为功能机时代就有的功能,简陋至极的UI,缓慢的响应,孱弱的功能,在智能机时代已经不合时宜了。有测试同学提的bug,例如wap服务网页打不开,那是移动运营商就不维护那个网页了好不好,今天TM还有谁用wap上网啊。号簿管家有微信电话本好用嘛?运营商网上营业厅的app各大应用市场都有好不好。除了之前做运营商深度定制机今天还有哪个厂商要考虑stk。新开卡的同学应该发现不少4G的卡已经没有stk这个功能了,卡程序应该在不久就会推出历史舞台了。不仅是stk,原先通过Sim卡设置的呼叫转移等功能新出的4G卡大多已经无法通过通话设置进行设置了,只能通过网上营业厅。Stk代码也没有啥通用性,高通自己的代码,4.4.2的stk放到4.4.4就不能用了。
大家要远离stk啊。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android stk