summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Matt Casey <mrcasey@google.com> 2023-01-27 21:44:40 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-01-27 21:44:40 +0000
commit9719ba1fde7db0e507208bb88a2626eed16a72ce (patch)
treee35138ff91c9c174256597550da335cfec6bfe34
parent845e0562ec4437ade7a55d9b102ec8ffa3bc60ef (diff)
parent7073378c7c3d430871fbcc8821a0250bc79b5acc (diff)
Merge "Send a regular ResultReceiver instead of a subclass." into tm-qpr-dev
-rw-r--r--java/src/com/android/intentresolver/ChooserActivity.java16
1 files changed, 15 insertions, 1 deletions
diff --git a/java/src/com/android/intentresolver/ChooserActivity.java b/java/src/com/android/intentresolver/ChooserActivity.java
index 6f6baa27..7fa715c3 100644
--- a/java/src/com/android/intentresolver/ChooserActivity.java
+++ b/java/src/com/android/intentresolver/ChooserActivity.java
@@ -61,6 +61,7 @@ import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
+import android.os.Parcel;
import android.os.Parcelable;
import android.os.PatternMatcher;
import android.os.ResultReceiver;
@@ -1177,7 +1178,7 @@ public class ChooserActivity extends ResolverActivity implements
}
mRefinementResultReceiver = new RefinementResultReceiver(this, target, null);
fillIn.putExtra(Intent.EXTRA_RESULT_RECEIVER,
- mRefinementResultReceiver);
+ mRefinementResultReceiver.copyForSending());
try {
mChooserRequest.getRefinementIntentSender().sendIntent(
this, 0, fillIn, null, null);
@@ -2223,6 +2224,19 @@ public class ChooserActivity extends ResolverActivity implements
mChooserActivity = null;
mSelectedTarget = null;
}
+
+ /**
+ * Apps can't load this class directly, so we need a regular ResultReceiver copy for
+ * sending. Obtain this by parceling and unparceling (one weird trick).
+ */
+ ResultReceiver copyForSending() {
+ Parcel parcel = Parcel.obtain();
+ writeToParcel(parcel, 0);
+ parcel.setDataPosition(0);
+ ResultReceiver receiverForSending = ResultReceiver.CREATOR.createFromParcel(parcel);
+ parcel.recycle();
+ return receiverForSending;
+ }
}
/**