I am a little bit confused about the ComponentName class in Android.
There are different ways to get to a component name object, but I don't know when to use which... and why!
ComponentName cn = new ComponentName("de.zordid.sampleapp.widget",
ComponentName cn = new ComponentName(context, WidgetProvider.class);
ComponentName constructor taking two
Strings can be used to refer to a component in another application. But, the first argument is not the package name of the class; it is the package name of the application---the
package attribute of the
manifest element in that application's
AndroidManifest.xml. So your first example should be
ComponentName cn = new ComponentName("de.zordid.sampleapp", "de.zordid.sampleapp.widget.WidgetProvider");
That constructor could certainly be used to refer to components in your own application, but since you already have hold of a
Context from your own application you might as well use it and use one of the other constructors. In my opinion, the one taking a
Class should be preferred whenever usable. You could use the one taking a
String if you only know the class dynamically for some reason; in that case, it should take the fully-qualified class name as above.