[FAQ19483][SAT]双卡情况下如何显示两个STK icon图标
来源:互联网 发布:unity3d制作2d游戏教程 编辑:程序博客网 时间:2024/05/21 21:50
[DESCRIPTION]
对于双卡版本,在M,N版本之后都只是显示一个STK APP图标。但是有一些运营商要求双卡版本需要分开显示STK APP,也就是要显示两个STK APP图标。
[SOLUTION]
对于显示两个STK APP图标主要有如下几个步骤可供参考:
1, 参考cu版本修改 AndroidManifest.xml,主要是为了在manifest中配置双卡的stk app.
例如可以
/vendor/mediatek/proprietary/packages/apps/Stk/cu/AndroidManifest.xml
修改为:
/vendor/mediatek/proprietary/packages/apps/Stk/AndroidManifest.xml
修改为:
/vendor/mediatek/proprietary/packages/apps/Stk/AndroidManifest.xml
2, startPollingIccid修改install SIM1和SIM2 (StkAppService.java )
主要是为了instal双卡stk app。
demo code例如:
/vendor/mediatek/proprietary/packages/apps/Stk/src/com/android/stk/StkAppService.java
[Java]hide
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
private
void
startPollingIccId() {
////////////////////
4304
// Install StkMain by default
4305
if
(-
1
== appInstaller.getIsInstalled(appInstaller.STK_LAUNCH_ID)) {
4306
appInstaller.install(mContext, appInstaller.STK_LAUNCH_ID);
4307
SystemClock.sleep(
100
);
4308
}
4309
4310
for
(simIdx = PhoneConstants.SIM_ID_1; simIdx < mSimCount; simIdx++) {
4311
CatLog.d(LOG_TAG,
"mIccId["
+ simIdx +
"]: "
+ mIccId[simIdx]);
4312
if
(ICCID_STRING_FOR_NO_SIM.equals(mIccId[simIdx])) {
4313
appInstaller.unInstall(mContext, simIdx);
4314
StkAvailable(simIdx, STK_AVAIL_NOT_AVAILABLE);
4315
mStkContext[simIdx].mIccCardState =
0
;
4316
}
else
{
4317
if
((mIccId[simIdx] !=
null
) ||
false
== (
""
.equals(mIccId[simIdx]))) {
4318
// If any mIccId[] is valid, install StkMain
4319
if
(appInstaller.STK_NOT_INSTALLED ==
4320
appInstaller.getIsInstalled(appInstaller.STK_LAUNCH_ID)) {
4321
appInstaller.install(mContext, appInstaller.STK_LAUNCH_ID);
4322
}
4323
mStkContext[simIdx].mIccCardState =
1
;
4324
}
4325
}
4326
}
修改为:
[Java]hide
1
2
3
appInstaller.install(mContext, PhoneConstants.SIM_ID_1);
appInstaller.install(mContext, PhoneConstants.SIM_ID_2);
如上两个步骤已经实现显示两个stk app,但是无卡情况下是会被uninstall的,因此如果需要在无卡情况下也显示icon,需要继续修改步骤3.
3, 修改在收到SIM STATE CHANGE广播后避免被uninstall.
demo code例如如下:
/vendor/mediatek/proprietary/packages/apps/Stk/src/com/android/stk/BootCompletedReceiver.java
第一处修改:
第一处修改:
[Java]hide
1
2
3
4
5
6
7
8
9
10
11
////////////////////////////////
282
if
(appService !=
null
) {
283
int
currentState = appService.StkQueryAvailable(SIMID);
284
CatLog.d(LOG_TAG,
"[ACTION_SIM_STATE_CHANGED][bUnInstall] : "
+ bUnInstall +
", currentState: "
+ currentState);
285
if
(bUnInstall && app_state == StkAppInstaller.STK_INSTALLED) {
////////////////////////////////
修改为:
[Java]hide
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/////////////////////////////////
282
if
(appService !=
null
) {
283
int
currentState = appService.StkQueryAvailable(SIMID);
284
CatLog.d(LOG_TAG,
"[ACTION_SIM_STATE_CHANGED][bUnInstall] : "
+ bUnInstall +
", currentState: "
+ currentState);
bUnInstall =
false
;
CatLog.d(LOG_TAG,
"[ACTION_SIM_STATE_CHANGED][bUnInstall] : force to install STK app bUnInstall = false."
);
285
if
(bUnInstall && app_state == StkAppInstaller.STK_INSTALLED) {
////////////////////////////////
/vendor/mediatek/proprietary/packages/apps/Stk/src/com/android/stk/BootCompletedReceiver.java
第二处修改:
第二处修改:
[Java]hide
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
260
}
else
if
((IccCardConstants.INTENT_VALUE_ICC_ABSENT).equals(SIMStatus)) {
261
CatLog.d(LOG_TAG,
"SIM_ABSENT, removed sim: "
+ SIMID);
262
/*For OP02 spec v4.1 start*/
263
String optr = SystemProperties.get(
"ro.operator.optr"
);
264
if
(optr !=
null
&&
"OP02"
.equals(optr)) {
265
SystemProperties.set(
266
INSTALL_STK_IF_FLIGHT_MODE_ON_PROPERTY[SIMID],
"0"
);
267
}
268
Bundle args =
new
Bundle();
269
args.putInt(StkAppService.OPCODE, StkAppService.OP_REMOVE_STM);
270
args.putInt(StkAppService.SLOT_ID, SIMID);
271
context.startService(
new
Intent(context, StkAppService.
class
).putExtras(args));
272
}
else
{
修改为:
[Java]hide
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
260
}
else
if
((IccCardConstants.INTENT_VALUE_ICC_ABSENT).equals(SIMStatus)) {
261
CatLog.d(LOG_TAG,
"SIM_ABSENT, removed sim: "
+ SIMID);
262
/*For OP02 spec v4.1 start*/
263
String optr = SystemProperties.get(
"ro.operator.optr"
);
264
if
(optr !=
null
&&
"OP02"
.equals(optr)) {
265
SystemProperties.set(
266
INSTALL_STK_IF_FLIGHT_MODE_ON_PROPERTY[SIMID],
"0"
);
267
}
// Bundle args = new Bundle();
// args.putInt(StkAppService.OPCODE, StkAppService.OP_REMOVE_STM);
// args.putInt(StkAppService.SLOT_ID, SIMID);
// context.startService(new Intent(context, StkAppService.class).putExtras(args));
272
}
else
{
0 0
- [FAQ19483][SAT]双卡情况下如何显示两个STK icon图标
- 双卡版本不插卡的情况下状态栏中只显示了一个信号图标,而不是两个信号图标,如何修改为2个图标
- 如何让BitBtn按钮显示icon图标
- icon图标无法显示
- 如何使网站图标Icon显示在浏览器地址前面
- ClistCtrl 的ICON模式下,不显示图标
- Shortcut Icon地址栏显示图标
- 如何使网站图标Icon显示在浏览器地址http的前面?
- icon图标 地址栏 收藏夹显示 代码
- shortcut icon地址栏显示个性图标
- menu不显示icon图标的问题
- python(py2exe)打包成exe执行文件,vista/win7下icon图标显示问题的解决方案
- Androidsdtuio在使用ActionBar的情况下 icon 不显示的问题
- CListCtrl ICon图标模式下,如何让设置背景透明与文字置透明
- 如何制作网页URL的图标(Icon)
- Android Studio如何更改icon图标
- 如何在MenuItem中添加icon图标
- mui如何增加自定义icon图标
- storm '*/stormconf.ser' does not exist 问题nimbus进程刚启动后就自动退出
- Linux中安装jdk的三种方式
- Maven 安装 以及 eclipse 配置Maven 插件
- Tesseract-OCR4.0版本在VS2015上的编译与运行
- HDU6025-Coprime Sequence
- [FAQ19483][SAT]双卡情况下如何显示两个STK icon图标
- 最短路径-弗洛伊德算法的java实现
- 文件描述符与缓冲区
- [leetcode]73. Set Matrix Zeroes
- java 生成不重复的随机数
- Java反射机制
- 归纳迁移学习算法---Adaboost 算法实例解析
- Educational Codeforces Round 19-D. Broken BST
- 继承与组合 C++(五)