41

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.

2
  • Whenever launching an Activity, you can add affinity flags like so. Not sure if this is what you intended. Intent intent = new Intent(this, IntroActivity.class); // These flags disable back-pressing back into the previous activity intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); finish(); Commented Aug 7, 2016 at 19:53
  • Possible duplicate of Android: Task affinity & Clear task Commented May 4, 2018 at 9:00

2 Answers 2

5

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.

Sign up to request clarification or add additional context in comments.

Comments

-4

Use this method :

finishAffinity();

1 Comment

He is asking about "setting affinity" not finishing affinity

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.