android修改桌面主应用程序按钮边的快捷图片按钮为Settings

好吧,我还是先上一张图吧。。。。

本来在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替换机器里面的就完成了。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值