我主要是在原生源码中添加这一功能,主要用于学习。。。。先看一张图:
看到那个按电源键挂断电话吧,那就是我所添加的,本来原生源码中是没有这一栏的。。。。。
大概思路:
首先我先添加这一个checkboxPreference,然后将是否选择这一功能的值(0和1)存到data/data/com.android.providers.settings
/databases/settings.db数据库的system表中,然后再根据数据库表中的值在PhoneWindownManager.java中去处理。
具体过程:
首先找到setting的源码,在源码下我们要找到通话设置,在seting.xml中我们能找到
settings:icon="@drawable/ic_settings_call"
android:title="@string/call_settings_title">
android:targetPackage="com.android.phone"
android:targetClass="com.android.phone.CallFeaturesSetting" />
这个call_settings就是我们在setting(设置)中看到的通话设置,但是我们却不能在settings中的源码中找到关于call_settings的布局文件,
因此我们需要找到它,其实这个布局文件是在package/app/Phone中,也就是在Phone这个app源码的资源文件中。
因此我们在Phone的资源文件下能找到Call_feature_setting.xml文件如下:
android:title="@string/call_settings">
android:title="@string/fdn"
android:summary="@string/sum_fdn"
android:persistent="false">
android:targetClass="com.android.phone.FdnSetting" />
android:title="@string/voicemail"
android:persistent="false">
android:title="@string/voicemail_provider"
android:summary="@string/sum_voicemail_choose_provider"
android:defaultValue=""
android:persistent="true"
/>
android:persistent="false">
android:title="@string/voicemail_settings_number_label"
android:persistent="false"
android:dialogTitle="@string/voicemail"
phone:confirmMode="confirm"
android:singleLine="true"
android:autoText="false" />
。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。
因此我们可以在最前面添加一个checkboxPreference
android:title="@string/press_power_end_call"
android:persistent="false"/>
变成:
android:title="@string/call_settings">
android:title="@string/press_power_end_call"
android:persistent="false"/>
android:title="@string/fdn"
android:summary="@string/sum_fdn"
android:persistent="false">
android:targetClass="com.android.phone.FdnSetting" />
。。。。。。。
。。。。。。。
。。。。。。。