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秒,超时没有应答后一般动作是返回上一层。/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。
frameworks/opt/telephony/src/java/com/android/internal/telephony/cat/