Setting "task affinity" programmatically Setting "task affinity" programmatically android android

Setting "task affinity" programmatically


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.


Use this method :

finishAffinity();