Android6.0之来电转接号码显示修改
Android6.0之来电转接号码显示修改
手机来电转接界面是在,点开Dialer-搜索框右边的三个点-设置-通话账户(要先插卡)-中国移动或者中国联通--来电转接--第一行,显示始终转接
将所有来电转接到+86xxxxxxxxxxx
当按home键回到主界面,然后在设置里切换语言,然后在recent键回到来电转接设置界面时发现来电转接的号码变成了{0},
通过搜索字符串
package/service/Telephony/res/values/strings.xml:219:
<string name="sum_cfu_enabled">Forwarding all calls to <xliff:g id="phonenumber" example="555-1212">{0}</xliff:g></string>
发现引用的地方在package/service/Telephony/res/xml/callforward_options.xml
<com.android.phone.CallForwardEditPreference
android:key="button_cfu_key"
android:title="@string/labelCFU"
android:persistent="false"
android:summaryOn="@string/sum_cfu_enabled"
android:summaryOff="@string/sum_cfu_disabled"
android:dialogTitle="@string/labelCFU"
android:dialogMessage="@string/messageCFU"
phone:confirmMode="activation"
phone:serviceClass="voice"
phone:reason="unconditional"
android:singleLine="true"
android:autoText="false"
android:enabled="false" />
发现这是一个自定义的com.android.phone.CallForwardEditPreference
用eng的手机通过View视图查看工具可以发现
当前的界面是package/service/Telephony/src/com/android/phone/GsmUmtsCallForwardOptions.java
private static final String BUTTON_CFU_KEY = "button_cfu_key";
PreferenceScreen prefSet = getPreferenceScreen();
mButtonCFU = (CallForwardEditPreference) prefSet.findPreference(BUTTON_CFU_KEY);
mButtonCFU.setParentActivity(this, mButtonCFU.reason);
mButtonCFB.setParentActivity(this, mButtonCFB.reason);
mPreferences.add(mButtonCFU);
mPreferences.add(mButtonCFB);
switch (requestCode) {
case CommandsInterface.CF_REASON_UNCONDITIONAL:
mButtonCFU.onPickActivityResult(getArabCharNumber(cursor.getString(0)));
@Override
public void onResume() {
super.onResume();
if (mFirstResume) {
if (mIcicle == null) {
if (DBG) Log.d(LOG_TAG, "start to init ");
mPreferences.get(mInitIndex).init(this, false, mPhone);
} else {
mInitIndex = mPreferences.size();
for (CallForwardEditPreference pref : mPreferences) {
Bundle bundle = mIcicle.getParcelable(pref.getKey());
pref.setToggled(bundle.getBoolean(KEY_TOGGLE));
pref.setEnabled(bundle.getBoolean(KEY_STATE));
CallForwardInfo cf = new CallForwardInfo();
cf.number = bundle.getString(KEY_NUMBER);
cf.status = bundle.getInt(KEY_STATUS);
pref.handleCallForwardResult(cf);
pref.init(this, true, mPhone);
}
}
mFirstResume = false;
mIcicle = null;
}
}
中的
cf.number = bundle.getString(KEY_NUMBER);
cf.status = bundle.getInt(KEY_STATUS);
pref.handleCallForwardResult(cf);
进到handleCallForwardResult()这个方法中
然后可以发现进到了package/service/Telephony/src/com/android/phone/CallForwardEditPreference.java中
void handleCallForwardResult(CallForwardInfo cf) {
callForwardInfo = cf;
if (DBG) Log.d(LOG_TAG, "handleGetCFResponse done, callForwardInfo=" + callForwardInfo);
setToggled(callForwardInfo.status == 1);
setPhoneNumber(callForwardInfo.number);
}
然后发现
private void updateSummaryText() {
if (isToggled()) {
CharSequence summaryOn;
final String number = getRawPhoneNumber();
if (number != null && number.length() > 0) {
// Wrap the number to preserve presentation in RTL languages.
String wrappedNumber = BidiFormatter.getInstance().unicodeWrap(
number, TextDirectionHeuristics.LTR);
String values[] = { wrappedNumber };
/// M: for Plug-in @{
ExtensionManager.getCallForwardExt().updateSummaryTimeSlotText(this, values);
/// }@
summaryOn = TextUtils.replace(mSummaryOnTemplate, SRC_TAGS, values);
} else {
summaryOn = getContext().getString(R.string.sum_cfu_enabled_no_number);
}
setSummaryOn(summaryOn);
}
}
所以在
| /// }@ | /// }@ | 78 | ||
![]() |
79 | mPhone.getCallForwardingOption(reason, | mPhone.getCallForwardingOption(reason, | 79 |
| 80 | mHandler.obtainMessage(MyHandler.MESSAGE_GET_CF, | mHandler.obtainMessage(MyHandler.MESSAGE_GET_CF, | 80 | |
| 81 | // unused in this case | // unused in this case | 81 | |
| 82 | CommandsInterface.CF_ACTION_DISABLE, | CommandsInterface.CF_ACTION_DISABLE, | 82 | |
| 83 | MyHandler.MESSAGE_GET_CF, null)); | MyHandler.MESSAGE_GET_CF, null)); | 83 | |
| 84 | } | } | 84 | |
| 85 | if (mTcpListener != null) { | if (mTcpListener != null) { | 85 | |
| 86 | mTcpListener.onStarted(this, true); | mTcpListener.onStarted(this, true); | 86 | |
| 87 | } | } | 87 | |
| } else { | 88 | |||
| updateSummaryText(); | 89 | |||
| 88 | } | } | 90 | |
| 89 | } | } | 91 | |
| 90 | 92 | |||
| 91 | @Override | @Override | 93 | |
| 92 | protected void onBindDialogView(View view) { | protected void onBindDialogView(View view) { | 94 | |
| 93 | // default the button clicked to be the cancel button. | // default the button clicked to be the cancel button. | 95 | |
| 94 | mButtonClicked = DialogInterface.BUTTON_NEGATIVE; | mButtonClicked = DialogInterface.BUTTON_NEGATIVE; | 96 | |
| 95 | super.onBindDialogView(view); | super.onBindDialogView(view); | 97 | |
| 96 | /// M: for Plug-in @{ | /// M: for Plug-in @{ | 98 | |
| 97 | ExtensionManager.getCallForwardExt().onBindDialogView(this, view); | ExtensionManager.getCallForwardExt().onBindDialogView(this, view); |
void init(TimeConsumingPreferenceListener listener, boolean skipReading, Phone phone) {
mPhone = phone;
mTcpListener = listener;
if (!skipReading) {
/// M: for Plug-in @{
} else {
updateSummaryText();
}
}
调用已经写好的updateSummaryText();方法便可以实现通过recent键进到来电转接界面来电转接号码的显示
Android6.0之来电转接号码显示修改的更多相关文章
- Android6.0 源码修改之 Contacts应用
一.Contacts应用的主界面和联系人详情界面增加顶部菜单添加退出按钮 通过Hierarchy View 工具可以发现 主界面对应的类为 PeopleActivity 联系人详情界面对应的类为 Qu ...
- Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮
前言 之前写过屏蔽系统导航栏功能的文章,具体可看Android6.0 源码修改之屏蔽导航栏虚拟按键(Home和RecentAPP)/动态显示和隐藏NavigationBar 在某些特殊定制的版本中要求 ...
- android6.0搜索蓝牙无法显示问题解决
1.android6.0版本搜索蓝牙需要开启位置信息 需在Manifest中添加权限: <uses-permission android:name="android.permissio ...
- 【Android】Android6.0读取通话记录
需求:读取通话记录,然后列表显示,每条记录的数据包括姓名.号码.类型(来电.去电.未接,字体颜色分别为绿.蓝.红),然后长按条目弹出一个列表弹窗,显示[复制号码到拨号盘].[发短信].[打电话]. 先 ...
- Android6.0运行时权限管理
自从Android6.0发布以来,在权限上做出了很大的变动,不再是之前的只要在manifest设置就可以任意获取权限,而是更加的注重用户的隐私和体验,不会再强迫用户因拒绝不该拥有的权限而导致的无法安装 ...
- Android6.0 中appcompat_v7 报错
更新了AndroidSDK以后 各种错误,新建一个项目会附赠一个appcompat_v7,你只要知道这个是一个兼容包就可以了,具体的特性可以看相关介绍,其实也没啥特别的就是为了兼容低版本的呗, 但是呢 ...
- Android6.0权限大全和权限分类
本文转载至: https://blog.csdn.net/qq_26440221/article/details/53097868 自从出了Android6.0权限管理之后,再也不能像以前那样粘贴复制 ...
- Android app 在线更新那点事儿(适配Android6.0、7.0、8.0)
一.前言 app在线更新是一个比较常见需求,新版本发布时,用户进入我们的app,就会弹出更新提示框,第一时间更新新版本app.在线更新分为以下几个步骤: 1, 通过接口获取线上版本号,versionC ...
- [IMX6]Android6.0移植和分析
0. 知识点 中断(设备树) [IMX6]设备树分析--dts 1. 编译 Android6.0内核移植(1):分析编译日志 Android6.0内核移植(2):kernel编译内核 单独烧录kern ...
随机推荐
- Dev用于界面按选中列进行分组统计数据源(实用技巧)
如果有用U8的可以明白这个功能就是模仿他的统计功能.我不过是把他造成通用的与适应于DEV的. (效率为6000条数据分组统计时间为3秒左右分组列过多5秒.1000条以下0.几秒,500条下0.00几秒 ...
- paper 130:MatLab分类器大全(svm,knn,随机森林等)
train_data是训练特征数据, train_label是分类标签.Predict_label是预测的标签.MatLab训练数据, 得到语义标签向量 Scores(概率输出).1.逻辑回归(多项式 ...
- Java Thread 多线程 介绍
1.线程概述 几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进程. 当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程. 2.线程 ...
- 查看SQL语句在SQL Server上的执行时间
set statistics profile onset statistics io onset statistics time ongo--begin <这里写上你的语句...> se ...
- 无光驱在32位windows系统下安装64位windows系统
位的系统. 大家都知道,32位的操作系统最多只能支持3.2G的内存,现在内存白菜价,很多人都在原有基础上购入新内存,这样最少也有4G了,为了让内存不浪费,我 们只有升级到64位操作系统.但是很多朋友又 ...
- Git远程操作详解
Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...
- 关于JSON
JSON:一种数据交换格式,不是一种编程语言.(JSON 语法是 JavaScript 对象表示法语法的子集.) 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaSc ...
- 今天无意发现jquery的一个以前的误导
本文提供即刻提升你的脚本性能的十个步骤.不用担心,这并不是什么高深的技巧.人人皆可运用!这些技巧包括: 使用最新版本 合并.最小化脚本 用for替代each 用ID替代class选择器 给选择器指定前 ...
- Google-glog 日志库使用手记
作者:高张远瞩(HiLoveS) 博客:http://www.cnblogs.com/hiloves/ 转载请保留该信息 Google Glog 是一个C++语言的应用级日志记录框架,提供了 C++ ...
- 在Mac中保护私密文件,隐藏文件
在个人电脑中我们有些私密文件或者资料是不希望被人发现或者使用.保护私密文件的方式有很多,比如对文件进行加密,隐藏文件,修改文件后缀等.在Mac中我们也可以通过一些简单方式保护私密文件.这里我们简单介绍 ...
