Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for adding Intent flags to Sharing medium's corresponding opening intent #51

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Add support for adding Intent flags to Sharing medium's corresponding…
… opening intent.
  • Loading branch information
Chris Mpitzios committed Apr 19, 2018
commit fafac8bb75b75175270b159013ed8012560250f1
19 changes: 19 additions & 0 deletions library/src/main/java/fr/tvbarthel/intentshare/IntentShare.java
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,12 @@ public IntentShare[] newArray(int size) {
*/
ArrayList<ExtraProvider> extraProviders;

/**
* Add any valid Intent flag to Sharing medium's opening intent
* (i.e FLAG_ACTIVITY_NEW_TASK)
*/
List<Integer> intentFlags;

/**
* Keep a track on package with a specific
* {@link fr.tvbarthel.intentshare.IntentShare.ExtraProvider} in order to warn the user when
Expand Down Expand Up @@ -101,6 +107,7 @@ public IntentShare[] newArray(int size) {
private IntentShare(Context context) {
this.context = context;
extraProviders = new ArrayList<>();
intentFlags = new ArrayList<>();
packageWithExtraProvider = new ArrayList<>();
this.listener = null;
this.iconLoader = new AsyncIconLoader();
Expand All @@ -120,6 +127,8 @@ protected IntentShare(Parcel in) {
this.mailBody = in.readString();
this.mailSubject = in.readString();
this.extraProviders = in.createTypedArrayList(ExtraProvider.CREATOR);
this.intentFlags = new ArrayList<>();
in.readList(this.intentFlags, String.class.getClassLoader());
this.iconLoader = in.readParcelable(IconLoader.class.getClassLoader());
this.comparatorProvider = in.readParcelable(TargetActivityComparatorProvider.class.getClassLoader());
this.chooserTitle = in.readString();
Expand All @@ -137,6 +146,7 @@ public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.mailBody);
dest.writeString(this.mailSubject);
dest.writeTypedList(this.extraProviders);
dest.writeList(intentFlags);
dest.writeParcelable(this.iconLoader, flags);
dest.writeParcelable(this.comparatorProvider, flags);
dest.writeString(this.chooserTitle);
Expand Down Expand Up @@ -351,6 +361,15 @@ public IntentShare addExtraProvider(@NonNull ExtraProvider extraProvider) {
return this;
}

/**
* Allow to add a specific intent flag
* @param intentFlag Intent flag to be added to sharing medium's opening intent;
*/
public void addIntentFlag(Integer intentFlag) {

intentFlags.add(intentFlag);
}

/**
* Deliver the intent to the system.
* <p/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,11 @@ private Intent buildTargetActivityIntent(TargetActivity targetActivity, IntentSh
intent.putExtra(Intent.EXTRA_TEXT, intentShare.text);
addImageExtras(intent, intentShare.imageUri);
}
if ((intentShare.intentFlags != null) && !intentShare.intentFlags.isEmpty()) {
for (Integer intentFlag : intentShare.intentFlags){
intent.addFlags(intentFlag);
}
}
applyExtraProvider(intent, packageName, intentShare.extraProviders);
intent.setComponent(componentName);
return intent;
Expand Down