Launcher3 如何在桌面上预置窗口小部件AppWidget
Launcher3 和 Launcher2 在这方面的处理方式 不一样了, 修改 default_workspace.xml 无效
自己顶一下
可能是你的Launcher3.apk的权限不够
Google从KK开始对系统权限增加限制,对于system权限的获取有严格的规范。Launcher3默认拿不到系统BIND_APPWIDGET权限,因此无法预置
AppWidget。
AppWidget,Launcher3Launcher3Android.mk增加LOCAL_PRIVILEGED_MODULE:= true,这样build出来的
Launcher3.apk会生成到/system/priv-app目录下,可以预置appwidget。
不是 这个原因, 我的代码 版本是 android 5.1, loadDefaultFavoritesIfNecessary 如下:
synchronized public void loadDefaultFavoritesIfNecessary() {
String spKey = LauncherAppState.getSharedPreferencesKey();
SharedPreferences sp = getContext().getSharedPreferences(spKey, Context.MODE_PRIVATE);
if (sp.getBoolean(EMPTY_DATABASE_CREATED, false))
{
WorkspaceLoader loader = AutoInstallsLayout.get(getContext(),
mOpenHelper.mAppWidgetHost, mOpenHelper);
if (loader == null) {
final Partner partner = Partner.get(getContext().getPackageManager());
if (partner != null && partner.hasDefaultLayout()) {
final Resources partnerRes = partner.getResources();
int workspaceResId = partnerRes.getIdentifier(Partner.RES_DEFAULT_LAYOUT,
"xml", partner.getPackageName());
if (workspaceResId != 0) {
loader = new SimpleWorkspaceLoader(mOpenHelper, partnerRes, workspaceResId);
}
}
}
if (loader == null) {
loader = new SimpleWorkspaceLoader(mOpenHelper, getContext().getResources(),
getDefaultWorkspaceResourceId());
}
// Populate favorites table with initial favorites
SharedPreferences.Editor editor = sp.edit().remove(EMPTY_DATABASE_CREATED);
mOpenHelper.loadFavorites(mOpenHelper.getWritableDatabase(), loader);
editor.commit();
}
}
方法变了。
我 没有 百度 到 Partner 的任何消息;
有知道的,请回复一下。
