1.反编译settings.apk
2.在values/strings.xml里添加代码:
<string name="ad_settings">Advanced Settings</string>
<string name="la_settings">Launcher</string>
3.在values-zh-rcn/strings.xml里添加代码:
<string name="ad_settings">高级设置</string>
<string name="la_settings">启动器</string>
4.然后在drawable-hdpi里放2张图片:ic_launcher.png和ic_ad_settings.png
5.第一次回编译apk,(为了自动生成相应的public数值)文件名为1.apk,接着再反编译1.apk
6.然后找到res/xml/settings_headers.xml使用Notepad++打开该文件
在任意想添加的位置添加如下代码:
<header android:icon="@drawable/ic_launcher" android:id="@string/la_settings" android:title="@string/la_settings">
<intent android:targetPackage="com.cyanogenmod.trebuchet" android:targetClass="com.cyanogenmod.trebuchet.preference.Preferences" />
</header>
(这个链接到CM9启动器的设置选项)
==============================================
这里:
android:icon="@drawable/ic_launcher" 为图标索引名
android:title="@string/la_settings" 是显示的标题索引名,
<intent android:targetPackage="com.cyanogenmod.trebuchet" android:targetClass="com.cyanogenmod.trebuchet.preference.Preferences" />
为设定要启动的包名和Activity,可以用 ApkTool 反编译要启动的程序,然后打开 AndroidManifest.xml
查看 package="com.android.settings" 就是包名,至于启动的Activity,只要找到
<category android:name="android.intent.category.LAUNCHER" />
往上找他所属的Activity,可以看到类似
<activity android:label="@string/settings_label" android:name="Settings" android:taskAffinity="com.android.settings" android:clearTaskOnLaunch="true" android:launchMode="singleTop">
其中 android:name="Settings" ,Settings就是Activity名,加上包名com.android.settings
就变成了com.android.settings.Settings,这个com.android.settings.Settings也就是我们需要的
android:targetClass 的值。
==============================================
<header android:icon="@drawable/ic_ad_settings" android:id="@string/ad_settings" android:title="@string/ad_settings">
<intent android:targetPackage="com.android.settings" android:targetClass="com.android.settings.TestingSettings" />
</header>
(这个链接到设置的*#*#4636#*#*这条拨号器指令的)
7.第2次回编译成apk,用压缩软件相应的算法替换回Settings.apk修改过的文件。
8.替换回手机,搞定!
原文:http://www.cnblogs.com/qq190771752/p/4115810.html