Fixing dimensions for AppWidgetProviderInfo not getting updated properly
for PinItemRequest Test: Manually tested on device Change-Id: I7bbf7e93e052ef25c2a4a98ff0795ef500f68cc0
This commit is contained in:
@@ -9849,7 +9849,7 @@ package android.content.pm {
|
||||
method public boolean accept(android.os.Bundle);
|
||||
method public boolean accept();
|
||||
method public int describeContents();
|
||||
method public android.appwidget.AppWidgetProviderInfo getAppWidgetProviderInfo();
|
||||
method public android.appwidget.AppWidgetProviderInfo getAppWidgetProviderInfo(android.content.Context);
|
||||
method public int getRequestType();
|
||||
method public android.content.pm.ShortcutInfo getShortcutInfo();
|
||||
method public boolean isValid();
|
||||
|
||||
@@ -10277,7 +10277,7 @@ package android.content.pm {
|
||||
method public boolean accept(android.os.Bundle);
|
||||
method public boolean accept();
|
||||
method public int describeContents();
|
||||
method public android.appwidget.AppWidgetProviderInfo getAppWidgetProviderInfo();
|
||||
method public android.appwidget.AppWidgetProviderInfo getAppWidgetProviderInfo(android.content.Context);
|
||||
method public int getRequestType();
|
||||
method public android.content.pm.ShortcutInfo getShortcutInfo();
|
||||
method public boolean isValid();
|
||||
|
||||
@@ -9877,7 +9877,7 @@ package android.content.pm {
|
||||
method public boolean accept(android.os.Bundle);
|
||||
method public boolean accept();
|
||||
method public int describeContents();
|
||||
method public android.appwidget.AppWidgetProviderInfo getAppWidgetProviderInfo();
|
||||
method public android.appwidget.AppWidgetProviderInfo getAppWidgetProviderInfo(android.content.Context);
|
||||
method public int getRequestType();
|
||||
method public android.content.pm.ShortcutInfo getShortcutInfo();
|
||||
method public boolean isValid();
|
||||
|
||||
@@ -36,7 +36,6 @@ import android.os.RemoteException;
|
||||
import android.os.ServiceManager;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.SparseArray;
|
||||
import android.util.TypedValue;
|
||||
import android.widget.RemoteViews;
|
||||
import android.widget.RemoteViews.OnClickHandler;
|
||||
|
||||
@@ -381,15 +380,7 @@ public class AppWidgetHost {
|
||||
// Convert complex to dp -- we are getting the AppWidgetProviderInfo from the
|
||||
// AppWidgetService, which doesn't have our context, hence we need to do the
|
||||
// conversion here.
|
||||
appWidget.minWidth =
|
||||
TypedValue.complexToDimensionPixelSize(appWidget.minWidth, mDisplayMetrics);
|
||||
appWidget.minHeight =
|
||||
TypedValue.complexToDimensionPixelSize(appWidget.minHeight, mDisplayMetrics);
|
||||
appWidget.minResizeWidth =
|
||||
TypedValue.complexToDimensionPixelSize(appWidget.minResizeWidth, mDisplayMetrics);
|
||||
appWidget.minResizeHeight =
|
||||
TypedValue.complexToDimensionPixelSize(appWidget.minResizeHeight, mDisplayMetrics);
|
||||
|
||||
appWidget.updateDimensions(mDisplayMetrics);
|
||||
synchronized (mViews) {
|
||||
v = mViews.get(appWidgetId);
|
||||
}
|
||||
|
||||
@@ -31,7 +31,6 @@ import android.os.Process;
|
||||
import android.os.RemoteException;
|
||||
import android.os.UserHandle;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.TypedValue;
|
||||
import android.widget.RemoteViews;
|
||||
|
||||
import com.android.internal.appwidget.IAppWidgetService;
|
||||
@@ -760,7 +759,7 @@ public class AppWidgetManager {
|
||||
}
|
||||
for (AppWidgetProviderInfo info : providers.getList()) {
|
||||
// Converting complex to dp.
|
||||
convertSizesToPixels(info);
|
||||
info.updateDimensions(mDisplayMetrics);
|
||||
}
|
||||
return providers.getList();
|
||||
} catch (RemoteException e) {
|
||||
@@ -782,7 +781,7 @@ public class AppWidgetManager {
|
||||
AppWidgetProviderInfo info = mService.getAppWidgetInfo(mPackageName, appWidgetId);
|
||||
if (info != null) {
|
||||
// Converting complex to dp.
|
||||
convertSizesToPixels(info);
|
||||
info.updateDimensions(mDisplayMetrics);
|
||||
}
|
||||
return info;
|
||||
} catch (RemoteException e) {
|
||||
@@ -1072,18 +1071,6 @@ public class AppWidgetManager {
|
||||
}
|
||||
}
|
||||
|
||||
private void convertSizesToPixels(AppWidgetProviderInfo info) {
|
||||
// Converting complex to dp.
|
||||
info.minWidth = TypedValue.complexToDimensionPixelSize(info.minWidth,
|
||||
mDisplayMetrics);
|
||||
info.minHeight = TypedValue.complexToDimensionPixelSize(info.minHeight,
|
||||
mDisplayMetrics);
|
||||
info.minResizeWidth = TypedValue.complexToDimensionPixelSize(info.minResizeWidth,
|
||||
mDisplayMetrics);
|
||||
info.minResizeHeight = TypedValue.complexToDimensionPixelSize(info.minResizeHeight,
|
||||
mDisplayMetrics);
|
||||
}
|
||||
|
||||
/**
|
||||
* Request to pin an app widget on the current launcher. It's up to the launcher to accept this
|
||||
* request (optionally showing a user confirmation). If the request is accepted, the caller will
|
||||
|
||||
@@ -26,6 +26,8 @@ import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.content.ComponentName;
|
||||
import android.os.UserHandle;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.TypedValue;
|
||||
|
||||
/**
|
||||
* Describes the meta data for an installed AppWidget provider. The fields in this class
|
||||
@@ -378,6 +380,17 @@ public class AppWidgetProviderInfo implements Parcelable {
|
||||
return loadDefaultIcon ? providerInfo.loadIcon(context.getPackageManager()) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public void updateDimensions(DisplayMetrics displayMetrics) {
|
||||
// Converting complex to dp.
|
||||
minWidth = TypedValue.complexToDimensionPixelSize(minWidth, displayMetrics);
|
||||
minHeight = TypedValue.complexToDimensionPixelSize(minHeight, displayMetrics);
|
||||
minResizeWidth = TypedValue.complexToDimensionPixelSize(minResizeWidth, displayMetrics);
|
||||
minResizeHeight = TypedValue.complexToDimensionPixelSize(minResizeHeight, displayMetrics);
|
||||
}
|
||||
|
||||
/**
|
||||
* Parcelable.Creator that instantiates AppWidgetProviderInfo objects
|
||||
*/
|
||||
|
||||
@@ -1249,8 +1249,13 @@ public class LauncherApps {
|
||||
* {@link #REQUEST_TYPE_APPWIDGET} request.
|
||||
*/
|
||||
@Nullable
|
||||
public AppWidgetProviderInfo getAppWidgetProviderInfo() {
|
||||
return mAppWidgetInfo;
|
||||
public AppWidgetProviderInfo getAppWidgetProviderInfo(Context context) {
|
||||
if (mAppWidgetInfo != null) {
|
||||
AppWidgetProviderInfo info = mAppWidgetInfo.clone();
|
||||
info.updateDimensions(context.getResources().getDisplayMetrics());
|
||||
return info;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -83,7 +83,8 @@ public class ShortcutManagerTest9 extends BaseShortcutManagerTest {
|
||||
private void assertPinItemRequest(PinItemRequest actualRequest, String className) {
|
||||
assertNotNull(actualRequest);
|
||||
assertEquals(PinItemRequest.REQUEST_TYPE_APPWIDGET, actualRequest.getRequestType());
|
||||
assertEquals(className, actualRequest.getAppWidgetProviderInfo().provider.getClassName());
|
||||
assertEquals(className, actualRequest.getAppWidgetProviderInfo(getTestContext())
|
||||
.provider.getClassName());
|
||||
}
|
||||
|
||||
public void testNotForeground() {
|
||||
|
||||
Reference in New Issue
Block a user