There's no real way to copy a widget. It needs three things:
- ask the remote app for existing data
- ask the remote app to create a new widget
- ask the remote app to import the data
1. is possible, but using a non standard interface. It only works for widget providers that supports it, that is: quite a few but among them are big players.
2. is possible using standard Android APIs
3. is possible using the same non standard interface, BUT it's uses to recreate the same widget, not a copy. There's no way to guaranty that the widget provider will support using the same set of data for two distinct widget.
For these reasons, I didn't spent too much effort on widget copy. It's reset to an invalid one.