修改sim卡号码 android,android 如何动态修改SIM卡应用名称 MT6572 MT6589
两种方法:
方法1:
packages\apps\launcher2\src\com\android\launcher2\PagedViewIcon.java
1:6575、6573、6577平台:
将applyFromApplicationInfo()方法中的setText,通过packageName来过滤,设置期望显示的名字。
例如:packageName
=“com.android.stk2”,期望显示的名字"我的名字"
if
(packageName等于info.componentName.mPackage)
{
setText("http://blog.sina.com.cn/mtkshanghai")
}
else
{
setText(info.title);
}
2:6589和6572平台:两个stk应用程序是共用一个packageName的,所以无法通过包名来区分,必须通过类名来区分。例如插入卡槽2的sim或usim应用程序是通过启动"stkLauncherActivityⅡ"
将applyFromApplicationInfo()方法中的setText,通过TargetclassName来过滤,设置期望显示的名字。
例如:TargetclassName
=“stkLauncherActivityⅡ”,期望显示的名字"我的名字"
if
(TargetclassName等于info.componentName.mClass)
{
setText("http://blog.sina.com.cn/mtkshanghai")
}
else
{
setText(info.title);
}
修改应用程序的快捷方式名称:
packages\apps\launcher2\src\com\android\launcher2\iconCache.java
具体修改:
将cacheLocked()方法中,通过特殊判断将要显示的名字赋值给entry.title。
同理这里也要区分上面两种情况。
注意:6572对应的版本是JB3, 6589对应的版本:JB2
下面以将STK app name动态修改成运营商名称为例子。
1:运营商的名称是存储在:
卡1: TelephonyProperties.PROPERTY_OPERATOR_ALPHA
卡2: TelephonyProperties.PROPERTY_OPERATOR_ALPHA_2
2:使用运营商名字来动态修改package对应的app name(应用程序名字)
2.1: GB2版本:
修改文件:ContextImpl.java
import
android.os.SystemProperties;
import
com.android.internal.telephony.TelephonyProperties;
@Override
public
CharSequence getText(String packageName, int
resid,
ApplicationInfo
appInfo) {
ResourceName
name = new ResourceName(packageName, resid);
CharSequence
text = getCachedString(name);
if
(text != null) {
//add
start
if(packageName.equalsIgnoreCase("com.android.stk"))
{
Log.d("jby","packagemanager1,stkpackageName1:"+packageName);
String
tmptext=SystemProperties.get(TelephonyProperties.PROPERTY_OPERATOR_ALPHA);
if(!tmptext.isEmpty())
if(!tmptext.equalsIgnoreCase("com.android.stk"))
text=tmptext;
}
else
if(packageName.equalsIgnoreCase("com.android.stk2"))
{
Log.d("jby","packagemanager1,stkpackageName2:"+packageName);
String
tmptext=SystemProperties.get(TelephonyProperties.PROPERTY_OPERATOR_ALPHA_2);
if(!tmptext.isEmpty())
if(!tmptext.equalsIgnoreCase("com.android.stk2"))
text=tmptext;
}
Log.d("jby","text="+text);
//add
end
return
text;
}
if
(appInfo == null) {
try
{
appInfo
= getApplicationInfo(packageName, 0);
}
catch (NameNotFoundException e) {
return
null;
}
}
try
{
Resources
r = getResourcesForApplication(appInfo);
text
= r.getText(resid);
putCachedString(name,
text);
//add
start
if(packageName.equalsIgnoreCase("com.android.stk"))
{
Log.d("jby","packagemanager1,stkpackageName1:"+packageName);
String
tmptext=SystemProperties.get(TelephonyProperties.PROPERTY_OPERATOR_ALPHA);
if(!tmptext.isEmpty())
if(!tmptext.equalsIgnoreCase("com.android.stk"))
text=tmptext;
}
else
if(packageName.equalsIgnoreCase("com.android.stk2"))
{
Log.d("jby","packagemanager2,stkpackageName2:"+packageName);
String
tmptext=SystemProperties.get(TelephonyProperties.PROPERTY_OPERATOR_ALPHA_2);
if(!tmptext.isEmpty())
if(!tmptext.equalsIgnoreCase("com.android.stk2"))
text=tmptext;
}
Log.d("jby","text="+text);
//add
end
return
text;
}
catch (NameNotFoundException e) {
Log.w("PackageManager",
"Failure retrieving resources for"
+
appInfo.packageName);
}
catch (RuntimeException e) {
//
If an exception was thrown, fall through to
return
//
default icon.
Log.w("PackageManager",
"Failure retrieving text 0x"
+
Integer.toHexString(resid) + " in package "
+
packageName, e);
}
return
null;
}
2.2: 同理,JB、JB2、JB3和ICS、ICS2版本:
修改文件:ApplicationPackageManagerl.java
具体修改:参考上述的GB2版本修改,基本一样。
拓展需求:STK app name动态修改成Setup menu的title
1.在TelephonyProperties.java中为两个卡定义存放title的string:
static final String PROPERTY_STKAPP_NAME =
“gsm.stkapp.name”;
static final String PROPERTY_STKAPP_NAME_2 =
“gsm.stkapp.name2”;
2.当SETUP MENU上报时保存title.
在GB版本中的stkService.java或JB、ICS2版本的catService.java中作如下修改:
private void
handleProactiveCommand(CommandParams cmdParams){
……
switch(cmdParams.getCommandType()){
case
SET_UP_MENU:
if(removeMenu(cmdMsg.getMenu())){
mMenuCmd
= null;
}else{
mMenuCmd
= cmdMsg;
//Added
start
If(GEMINI_SIM_1
== simId){
SystemProperties.set(“gsm.stkapp.name”,mMenuCmd.mMenu.title);
}else{
SystemProperties.set(“gsm.stkapp.name2”,
mMenuCmd.mMenu.title);
}
//Endhttp://blog.sina.com.cn/mtkshanghai
}
}
}
注意:SystemProperties.set异步的。且设置属性命名是规范的,具体可参考如下:
3: 同理,使用上述SystemProperties.get(“gsm.stkapp.name”)获取SETUP MENU上报时保存title,并用来动态修改package对应的app name(应用程序名字)