Hungson175’s answer was great but it didn’t get me there all the way. Since I’m using AppWidgetHost to create the AppWidgetHostView’s I needed to extend both AppWidgetHost, and AppWidgetHostView. Luckily this is fairly simple to do and doesn’t require too much overriding of default android methods.
WidgetHost
public class WidgetHost extends AppWidgetHost {
public WidgetHost(Context context, int hostId) {
super(context, hostId);
}
@Override
protected AppWidgetHostView onCreateView(Context context, int appWidgetId, AppWidgetProviderInfo appWidget) {
// pass back our custom AppWidgetHostView
return new WidgetView(context);
}
}
WidgetView
public class WidgetView extends AppWidgetHostView {
private OnLongClickListener longClick;
private long down;
public WidgetView(Context context) {
super(context);
}
public WidgetView(Context context, int animationIn, int animationOut) {
super(context, animationIn, animationOut);
}
@Override
public void setOnLongClickListener(OnLongClickListener l) {
this.longClick = l;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch(MotionEventCompat.getActionMasked( ev ) ) {
case MotionEvent.ACTION_DOWN:
down = System.currentTimeMillis();
break;
case MotionEvent.ACTION_MOVE:
boolean upVal = System.currentTimeMillis() - down > 300L;
if( upVal ) {
longClick.onLongClick( WidgetView.this );
}
break;
}
return false;
}
}
Hope it helps someone, because dealing with AppWidget’s is difficult enough.