is there a way to set the "task affinity" programmatically? I mean like with some Intent flag or sth? I didn't find anything about this being possible in the Android docs.
Setting the affinity in a static way in the AndroidManifest.xml with android:taskAffinity does not suit my needs.
You cannot.
taskAffinity is contained by ActivityInfo, which is member of Activity.
Source code of Activity
public class Activity extends ContextThemeWrapper
    ...
    ... {
    // set by the thread after the constructor and before 
    // onCreate(Bundle savedInstanceState) is called.
    @UnsupportedAppUsage
    /*package*/ ActivityInfo mActivityInfo;
 }
And ActivityInfo has taskAffinity.
Source code of ActivityInfo
/**
 * Information you can retrieve about a particular application
 * activity or receiver. This corresponds to information collected
 * from the AndroidManifest.xml's <activity> and
 * <receiver> tags.
 */
public class ActivityInfo extends ComponentInfo implements Parcelable {
   /**
    * The affinity this activity has for another task in the system.  The
    * string here is the name of the task, often the package name of the
    * overall package.  If null, the activity has no affinity.  Set from the
    * {@link android.R.attr#taskAffinity} attribute.
    */
    public String taskAffinity;
According to the comment of source code, information of taskAffinity is collected from AndroidManifest.xml. And there is no public method to set mActivityInfo.taskAffinity.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With