Skip to content
This repository was archived by the owner on Aug 9, 2020. It is now read-only.

Commit 366e1fb

Browse files
Merge pull request #38 from esunilkumare/feature/Add_RequestCode_Parameter_In_Result
Feature/add request code parameter in result
2 parents 39975cc + ac7a397 commit 366e1fb

File tree

6 files changed

+54
-27
lines changed

6 files changed

+54
-27
lines changed

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,13 @@ RxActivityResult.on(this).startIntent(takePhoto)
5757
.subscribe(result -> {
5858
Intent data = result.data();
5959
int resultCode = result.resultCode();
60+
// the requestCode using which the activity is started can be received here.
61+
int requestCode = result.requestCode();
62+
63+
if(requestCode == YourActivity.YOUR_REQUEST_CODE)
64+
{
65+
// Do Something
66+
}
6067

6168
if (resultCode == RESULT_OK) {
6269
result.targetUI().showImage(data);

rx_activity_result/src/main/java/rx_activity_result2/HolderActivity.java

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,20 @@
2020
import android.content.Intent;
2121
import android.content.IntentSender;
2222
import android.os.Bundle;
23+
2324
import io.reactivex.functions.Action;
2425

2526
public class HolderActivity extends Activity {
2627
private static Request request;
2728
private OnPreResult onPreResult;
2829
private OnResult onResult;
2930
private int resultCode;
31+
private int requestCode;
3032
private Intent data;
33+
private static int FAILED_REQUEST_CODE = -909;
3134

32-
@Override protected void onCreate(Bundle savedInstanceState) {
35+
@Override
36+
protected void onCreate(Bundle savedInstanceState) {
3337
super.onCreate(savedInstanceState);
3438

3539
if (request == null) {
@@ -59,7 +63,7 @@ private void startIntentSender(RequestIntentSender requestIntentSender) {
5963
requestIntentSender.getFlagsValues(), requestIntentSender.getExtraFlags());
6064
} catch (IntentSender.SendIntentException exception) {
6165
exception.printStackTrace();
62-
onResult.response(RESULT_CANCELED, null);
66+
onResult.response(FAILED_REQUEST_CODE, RESULT_CANCELED, null);
6367
}
6468
}
6569

@@ -70,32 +74,36 @@ private void startIntentSenderWithOptions(RequestIntentSender requestIntentSende
7074
requestIntentSender.getFlagsValues(), requestIntentSender.getExtraFlags(), requestIntentSender.getOptions());
7175
} catch (IntentSender.SendIntentException exception) {
7276
exception.printStackTrace();
73-
onResult.response(RESULT_CANCELED, null);
77+
onResult.response(FAILED_REQUEST_CODE, RESULT_CANCELED, null);
7478
}
7579
}
7680

77-
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
81+
@Override
82+
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
7883
super.onActivityResult(requestCode, resultCode, data);
7984
this.resultCode = resultCode;
85+
this.requestCode = requestCode;
8086
this.data = data;
8187

8288
if (this.onPreResult != null) {
83-
this.onPreResult.response(resultCode, data)
84-
.doOnComplete(new Action() {
85-
@Override public void run() throws Exception {
86-
finish();
87-
}
88-
})
89-
.subscribe();
89+
this.onPreResult.response(requestCode, resultCode, data)
90+
.doOnComplete(new Action() {
91+
@Override
92+
public void run() throws Exception {
93+
finish();
94+
}
95+
})
96+
.subscribe();
9097
} else {
9198
finish();
9299
}
93100
}
94101

95-
@Override protected void onDestroy() {
102+
@Override
103+
protected void onDestroy() {
96104
super.onDestroy();
97105
if (onResult != null)
98-
onResult.response(resultCode, data);
106+
onResult.response(requestCode, resultCode, data);
99107
}
100108

101109
static void setRequest(Request aRequest) {

rx_activity_result/src/main/java/rx_activity_result2/OnPreResult.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55
import io.reactivex.Observable;
66

77
public interface OnPreResult<T> {
8-
Observable<T> response(int resultCode, @Nullable Intent data);
8+
Observable<T> response(int requestCode, int resultCode, @Nullable Intent data);
99
}

rx_activity_result/src/main/java/rx_activity_result2/OnResult.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66
import java.io.Serializable;
77

88
interface OnResult extends Serializable {
9-
void response(int resultCode, @Nullable Intent data);
9+
void response(int requestCode, int resultCode, @Nullable Intent data);
1010
}

rx_activity_result/src/main/java/rx_activity_result2/Result.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,20 @@
2121
public class Result<T> {
2222
private final T targetUI;
2323
private final int resultCode;
24+
private final int requestCode;
2425
private final Intent data;
2526

26-
public Result(T targetUI, int resultCode, Intent data) {
27+
public Result(T targetUI, int requestCode, int resultCode, Intent data) {
2728
this.targetUI = targetUI;
2829
this.resultCode = resultCode;
30+
this.requestCode = requestCode;
2931
this.data = data;
3032
}
3133

34+
public int requestCode() {
35+
return requestCode;
36+
}
37+
3238
public int resultCode() {
3339
return resultCode;
3440
}

rx_activity_result/src/main/java/rx_activity_result2/RxActivityResult.java

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,18 @@
2626
import android.support.v4.app.FragmentActivity;
2727
import android.support.v4.app.FragmentManager;
2828

29+
import java.util.List;
30+
2931
import io.reactivex.Observable;
3032
import io.reactivex.functions.Consumer;
3133
import io.reactivex.subjects.PublishSubject;
32-
import java.util.List;
3334

3435

3536
public final class RxActivityResult {
3637
static ActivitiesLifecycleCallbacks activitiesLifecycle;
3738

38-
private RxActivityResult() {}
39+
private RxActivityResult() {
40+
}
3941

4042
public static void register(final Application application) {
4143
activitiesLifecycle = new ActivitiesLifecycleCallbacks(application);
@@ -89,9 +91,10 @@ private Observable<Result<T>> startHolderActivity(Request request, @Nullable OnP
8991
HolderActivity.setRequest(request);
9092

9193
activitiesLifecycle.getOLiveActivity().subscribe(new Consumer<Activity>() {
92-
@Override public void accept(Activity activity) throws Exception {
94+
@Override
95+
public void accept(Activity activity) throws Exception {
9396
activity.startActivity(new Intent(activity, HolderActivity.class)
94-
.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION));
97+
.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION));
9598
}
9699
});
97100

@@ -100,7 +103,8 @@ private Observable<Result<T>> startHolderActivity(Request request, @Nullable OnP
100103

101104
private OnResult onResultActivity() {
102105
return new OnResult() {
103-
@Override public void response(int resultCode, Intent data) {
106+
@Override
107+
public void response(int requestCode, int resultCode, Intent data) {
104108
if (activitiesLifecycle.getLiveActivity() == null) return;
105109

106110
//If true it means some other activity has been stacked as a secondary process.
@@ -110,15 +114,16 @@ private OnResult onResultActivity() {
110114
}
111115

112116
T activity = (T) activitiesLifecycle.getLiveActivity();
113-
subject.onNext(new Result<>(activity, resultCode, data));
117+
subject.onNext(new Result<>(activity, requestCode, resultCode, data));
114118
subject.onComplete();
115119
}
116120
};
117121
}
118122

119123
private OnResult onResultFragment() {
120124
return new OnResult() {
121-
@Override public void response(int resultCode, Intent data) {
125+
@Override
126+
public void response(int requestCode, int resultCode, Intent data) {
122127
if (activitiesLifecycle.getLiveActivity() == null) return;
123128

124129
Activity activity = activitiesLifecycle.getLiveActivity();
@@ -128,8 +133,8 @@ private OnResult onResultFragment() {
128133

129134
Fragment targetFragment = getTargetFragment(fragmentManager.getFragments());
130135

131-
if(targetFragment != null) {
132-
subject.onNext(new Result<>((T) targetFragment, resultCode, data));
136+
if (targetFragment != null) {
137+
subject.onNext(new Result<>((T) targetFragment, requestCode, resultCode, data));
133138
subject.onComplete();
134139
}
135140

@@ -139,11 +144,12 @@ private OnResult onResultFragment() {
139144
};
140145
}
141146

142-
@Nullable Fragment getTargetFragment(List<Fragment> fragments) {
147+
@Nullable
148+
Fragment getTargetFragment(List<Fragment> fragments) {
143149
if (fragments == null) return null;
144150

145151
for (Fragment fragment : fragments) {
146-
if(fragment != null && fragment.isVisible() && fragment.getClass() == clazz) {
152+
if (fragment != null && fragment.isVisible() && fragment.getClass() == clazz) {
147153
return fragment;
148154
} else if (fragment != null && fragment.getChildFragmentManager() != null) {
149155
List<Fragment> childFragments = fragment.getChildFragmentManager().getFragments();

0 commit comments

Comments
 (0)