好吧,我还是先上两张张图吧(前一张是没修改的图,后一张是修改过的图)。。。。

本来在settings图片的地方是浏览器的,现在我们要做的就将之改为settings(当然你也可以添加另外的图标实现功能):

我们在源代码中找到Launcher2(桌面源码),找到launcher.java,里面setContentView(R.layout.launcher);说明它引用lanucher.xml文件,那么我们就在launcher的src下去找

launcher.xml文件(在layout-land下),里面有<ImageView
android:id="@+id/hotseat_right"
style="@style/HotseatButton.Right"
android:layout_above="@id/all_apps_button"

android:src="@drawable/hotseat_browser_normal"

android:onClick="launchHotSeat"

/>代码,这就是显示浏览器图标的,那么我们将其中的android:src="@drawable/hotseat_browser_normal"改为android:src="@drawable/"ic_launcher_settings"(settings的图标当然要自己放到图片文件夹里面,没有动画图片就用这一张,在dramwale下还有一个hotseat_browser.xml文件将里面的图片名也改为settings的图片名,就是没有图标变动的效果)

就将浏览器的图标改为settings的图标了。。。

我们再找到launcher.java中的loadHotseats() 方法,里面有mHotseatConfig = getResources().getStringArray(R.array.hotseats);和getResources().obtainTypedArray(R.array.hotseat_icons);那么我们的去改array.xml文件了,

改为:<string-array name="hotseats" translatable="false">
<item>intent:#Intent;action=android.intent.action.DIAL;end</item>
<item>*Settings*(可以随便啦,因为在后面将会进行判断是否等于*Settings*)</item>
</string-array>
<array name="hotseat_icons" translatable="false">
<item>@drawable/hotseat_phone</item>
<item>@drawable/ic_launcher_settings</item>
</array>

最重要的部分来了: 在loadHotseats() 方法里面有PackageManager pm = getPackageManager();
for (int i=0; i<mHotseatConfig.length; i++) {
Intent intent = null;
if (mHotseatConfig[i].equals("*Settings*")) {
// magic value meaning "launch user's default web browser"
// replace it with a generic web request so we can see if there is indeed a default
String defaultUri = getString(R.string.default_browser_url);
intent = new Intent(
Intent.ACTION_VIEW,
((defaultUri != null)
? Uri.parse(defaultUri)
: getDefaultBrowserUri())
).addCategory(Intent.CATEGORY_BROWSABLE);

意思大概为为启动浏览器添加intent,因此我们将 String defaultUri = getString(R.string.default_browser_url);
intent = new Intent(
Intent.ACTION_VIEW,
((defaultUri != null)
? Uri.parse(defaultUri)
: getDefaultBrowserUri())
).addCategory(Intent.CATEGORY_BROWSABLE);

改为intent = new Intent("com.android.settings");
intent.setClassName("com.android.settings", "com.android.settings.Settings"); //前面一个是包名,后一个是类名

就ok了。。。(当然launcher.java中的getDefaultBrowserUri()方法也没有用了。。。删不删都可以)

最后就编译一下launcher2,将生成的launcher2.apk替换机器里面的就完成了。




更多相关文章

  1. android 中解析RSSxml文件 GMT格式时间格式化
  2. android怎么判断程序在后台运行,让后将程序图标显示在状态栏
  3. OSG for Android新手教程系列(四)——JNI与NDK的使用
  4. Android(安卓)NDK笔记
  5. Android(安卓)Eclipse JNI 调用 .so文件加载问题
  6. android开发老罗教学视频
  7. Android(安卓)使用Notification
  8. 原生Android集成Flutter混合开发
  9. 在Android(安卓)Studio运行项目时出现 Download https://service

随机推荐

  1. Kotlin之Android项目实战--[玩android网
  2. android+WM9714(AC97)调试
  3. Android 7.0 IMS框架详解
  4. Android如何打印std::cout/printf(重定向s
  5. 不吹不黑!GitHub 上帮助人们学习编码的 12
  6. Android NDK开发学习(四)
  7. No.10 LVM快照的特点
  8. Android 适配7.0拍照、图库、裁剪
  9. android rotate
  10. Google将推出Android手机版Voice应用程序