【原创文章,转载请声明】转自http://blog.csdn.net/allen_704/article/details/28640827
Android4.4对widget有了一些变化,遇到的问题如题所示,无法创建widget。
看4.4的源码,在frameworks\base\services\java\com\android\server\AppWidgetServiceImpl.java这个类里面
public int allocateAppWidgetId(String packageName, int hostId) {
int callingUid = enforceSystemOrCallingUid(packageName);
synchronized (mAppWidgetIds) {
if (!mHasFeature) {
return -1;
}
ensureStateLoadedLocked();
int appWidgetId = mNextAppWidgetId++;
Host host = lookupOrAddHostLocked(callingUid, packageName, hostId);
AppWidgetId id = new AppWidgetId();
id.appWidgetId = appWidgetId;
id.host = host;
host.instances.add(id);
mAppWidgetIds.add(id);
saveStateAsync();
if (DBG) log("Allocating AppWidgetId for " + packageName + " host=" + hostId
+ " id=" + appWidgetId);
return appWidgetId;
}
}
看到这里,瞬间怀疑方法开始的这个if(!mHasFeature)这个判断,为了更进一步确认看一下4.1的源码,手上正好也有
public int allocateA