Android launcher -- launcher源码修改 2

launcher源码修改 2

替换报名

1、将包名package=”com.android.launcher”换成自己的定义的包名,如:
这里写图片描述


2、并将文件移植到com.xuhun.android.launcher包文件夹中:
这里写图片描述


3、报错Error:(1780, 59) 错误: 程序包com.android.launcher.R不存在
将com.android.launcher.R替换成com.xuhun.android.launcher.R;或者直接删除”com.android.launcher.”
这里写图片描述

这里写图片描述


4、在设备(手机)中应用ID还是com.android.launcher。
在cmd.exe中adb shell -> pm -p com.android.launcher查询
这里写图片描述

需要修改build.gradle(Module:app)中的
applicationId “com.xuhun.android.launcher”
这里写图片描述
再pm -p com.android.launcher查询:
这里写图片描述


5、报错Error:(11) No resource identifier found for attribute ‘defaultScreen’ in package ‘com.android.launcher’
需要修改布局文件中xmlns:launcher=”http://schemas.android.com/apk/res/com.android.launcher”替换成xmlns:launcher=”http://schemas.android.com/apk/res/com.xuhun.android.launcher”或
xmlns:launcher=”http://schemas.android.com/apk/res-auto”
这里写图片描述

这里写图片描述

重建工程Project
这里写图片描述

默认布局

1、布局文件xml

default_workspace.xml

<favorites xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher">

    <search
        launcher:screen="1"
        launcher:x="0"
        launcher:y="0" />

    <favorite
        launcher:packageName="com.android.contacts"
        launcher:className="com.android.contacts.DialtactsActivity"
        launcher:screen="1"
        launcher:x="0"
        launcher:y="3" />

    <favorite
        launcher:packageName="com.android.contacts"
        launcher:className="com.android.contacts.DialtactsContactsEntryActivity"
        launcher:screen="1"
        launcher:x="1"
        launcher:y="3" />

    <favorite
        launcher:packageName="com.android.browser"
        launcher:className="com.android.browser.BrowserActivity"
        launcher:screen="1"
        launcher:x="2"
        launcher:y="3" />

    <favorite
        launcher:packageName="com.google.android.apps.maps"
        launcher:className="com.google.android.maps.MapsActivity"
        launcher:screen="1"
        launcher:x="3"
        launcher:y="3" />

    <favorite
        launcher:packageName="com.android.mms"
        launcher:className="com.android.mms.ui.ConversationList"
        launcher:screen="1"
        launcher:x="0"
        launcher:y="2" />

    <favorite
        launcher:packageName="com.android.vending"
        launcher:className="com.android.vending.AssetBrowserActivity"
        launcher:screen="1"
        launcher:x="3"
        launcher:y="2" />

</favorites>
xml布局读取

LauncherProvider.java的内部类DatabaseHelper中

/**
 * Loads the default set of favorite packages from an xml file.
 *
 * @param db The database to write the values into
 */
private int loadFavorites(SQLiteDatabase db) {
    Intent intent = new Intent(Intent.ACTION_MAIN, null);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);
    ContentValues values = new ContentValues();

    PackageManager packageManager = mContext.getPackageManager();
    int i = 0;
    try {
        XmlResourceParser parser = mContext.getResources().getXml(R.xml.default_workspace);
        AttributeSet attrs = Xml.asAttributeSet(parser);
                XmlUtils.beginDocument(parser, TAG_FAVORITES);

        final int depth = parser.getDepth();

        int type;
        while (((type = parser.next()) != XmlPullParser.END_TAG ||
                parser.getDepth() > depth) && type != XmlPullParser.END_DOCUMENT) {

            if (type != XmlPullParser.START_TAG) {
                continue;
            }

            boolean added = false;
            final String name = parser.getName();

            TypedArray a = mContext.obtainStyledAttributes(attrs, R.styleable.Favorite);

            values.clear();
            values.put(LauncherSettings.Favorites.CONTAINER,
                    LauncherSettings.Favorites.CONTAINER_DESKTOP);
            values.put(LauncherSettings.Favorites.SCREEN,
                    a.getString(R.styleable.Favorite_screen));
            values.put(LauncherSettings.Favorites.CELLX,
                    a.getString(R.styleable.Favorite_x));
            values.put(LauncherSettings.Favorites.CELLY,
                    a.getString(R.styleable.Favorite_y));

            if (TAG_FAVORITE.equals(name)) {
                added = addShortcut(db, values, a, packageManager, intent);
            } else if (TAG_SEARCH.equals(name)) {
                added = addSearchWidget(db, values);
            } else if (TAG_CLOCK.equals(name)) {
                added = addClockWidget(db, values);
            }

            if (added) i++;

            a.recycle();
        }
    } catch (XmlPullParserException e) {
        LogHelper.errorLog(" Got exception parsing favorites.", e);
    } catch (IOException e) {
        LogHelper.errorLog(" Got exception parsing favorites.", e);
    }

    return i;
}

XmlUtils.beginDocument报错,可用源码中方法替换:
这里写图片描述

修改主屏DEFAULT_SCREN

修改Launcher.java中DEFAULT_SCREN

default_workspace.xml中修改Apk图标位置:
launcher:screen=”0”//第几屏
launcher:x=”3”
launcher:y=”3”

Launcher3 中默认布局

文件:
这里写图片描述


布局读取InvariantDeviceProfile
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xhBruce

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值