使Launcher2独立

时间:2013-02-26 10:45:32

标签: android android-launcher

我想让Launcher2(AOSP Launcher)成为我的Android 4.1.1设备的独立数据应用程序(非系统)(Branch jb-release; API Level 16)。

我找不到任何资源来修改它以使其独立,所以我自己尝试了。 希望有人可以帮我这样做(错误列表见下面列表)。

可在此处找到源代码:https://android.googlesource.com/platform/packages/apps/Launcher2/+/jb-release/src/com/android/launcher2

AppsCustomizedPagedView.java:

The import android.graphics.Insets cannot be resolved
The import android.graphics.TableMaskFilter cannot be resolved

我想两者都归于@Hide。这里有解决方法或解决方案吗?

Cling.java:

The method findViewToTakeAccessibilityFocusFromHover(View, View) of type Cling must override or implement a supertype method (Class Cling extends android.widget.FrameLayout)
The method includeForAccessibility() is undefined for the type View

HolographicOutlineHelper.java:

The import android.graphics.TableMaskFilter cannot be resolved

与AppsCustomizedPagedView.java(@Hide

相同

Launcher.java:

The import android.os.SystemProperties cannot be resolved
The import com.android.common cannot be resolved
The method clearAllAnimations() is undefined for the type ValueAnimator
The method startSearch(String, boolean, ComponentName, Bundle, boolean) in the type SearchManager is not applicable for the arguments (String, boolean, ComponentName, Bundle, boolean, Rect)
SystemProperties cannot be resolved
The method requestAccessibilityFocus() is undefined for the type Cling

PagedViewWidgetImageView.java:

The import android.graphics.Insets cannot be resolved
The method getLayoutInsets() is undefined for the type Drawable

RocketLauncher.java:

The import android.support cannot be resolved
The constructor RocketLauncher.Board(RocketLauncher, null) is undefined

SearchDropTargetBar.java:

The method getCompatibilityInfo() is undefined for the type Resources

Utilities.java:

The import android.graphics.TableMaskFilter cannot be resolved

Workspace.java:

The method getRealMetrics(DisplayMetrics) is undefined for the type Display
The method setChildrenLayersEnabled(boolean) is undefined for the type ViewGroup

2 个答案:

答案 0 :(得分:3)

这是许多人似乎想要做的事情,以及我做了一段时间的事情。

我让Launcher2编译并作为一个独立的应用程序运行,然后开源我的努力here

这是来自ICS的Launcher2,而不是JB,但它们非常相似。请注意,它不是完全没有bug,添加小部件会使应用程序崩溃(因为它使用系统级别权限。也许如果你通过root安装它会工作)。

以下列出了我必须做的所有事情,我记得这样做:

我们无法使用许多方法,例如setFastXXX(例如,setFastAlpha())。将这些更改为setXXX(例如,'setAlpha()`)对我有用。

我们可以通过getSystemService()获得的一些内容直接在代码中初始化,就像使用Vibrator类一样。这些需要更改为使用getSystemService()

我最终将Android源代码中的很多方法直接复制到我的课程中。

您可以结帐新版本的ICS启动器2,并对我开源的版本运行差异以查看完整更改列表。

答案 1 :(得分:2)

Chrislacy在GitHub上托管了一个独立的Android JellyBean Launcher,您可以将AppWidgets添加到主屏幕:) https://github.com/chrislacy/LauncherJellyBean