summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Katsiaryna Naliuka <katsiaryna@google.com> 2020-01-16 18:01:30 +0100
committer Katsiaryna Naliuka <katsiaryna@google.com> 2020-01-17 15:36:50 +0100
commit66cd0568e6441a975ed9bcadd6f99acf601e67a9 (patch)
tree3b3ae6bd77cf46540b137abc564f0138bb1b0586
parenta8be4506e40e201febd00d1d1d498f424610a2e0 (diff)
Passing shared media URI along with the shared media type to the App Predictor. The URI can be used to generate app/direct share targets by the app prediction services.
Test: flashed locally, verified that Uri gets passed to the locally installed prediction service in the intent filter; atest IntentTest Bug: 147206065 : Change-Id: I948d6a2e9d15dd3d9ab955571412c0f5922c1e23
-rw-r--r--core/java/com/android/internal/app/ChooserActivity.java25
1 files changed, 22 insertions, 3 deletions
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java
index b6b548c13d66..9532faecb4df 100644
--- a/core/java/com/android/internal/app/ChooserActivity.java
+++ b/core/java/com/android/internal/app/ChooserActivity.java
@@ -71,6 +71,7 @@ import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.Parcelable;
+import android.os.PatternMatcher;
import android.os.Process;
import android.os.RemoteException;
import android.os.ResultReceiver;
@@ -1650,10 +1651,28 @@ public class ChooserActivity extends ResolverActivity implements
try {
final Intent intent = getTargetIntent();
String dataString = intent.getDataString();
- if (TextUtils.isEmpty(dataString)) {
- dataString = intent.getType();
+ if (!TextUtils.isEmpty(dataString)) {
+ return new IntentFilter(intent.getAction(), dataString);
+ }
+ IntentFilter intentFilter = new IntentFilter(intent.getAction(), intent.getType());
+ List<Uri> contentUris = new ArrayList<>();
+ if (Intent.ACTION_SEND.equals(intent.getAction())) {
+ Uri uri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
+ if (uri != null) {
+ contentUris.add(uri);
+ }
+ } else {
+ List<Uri> uris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
+ if (uris != null) {
+ contentUris.addAll(uris);
+ }
+ }
+ for (Uri uri : contentUris) {
+ intentFilter.addDataScheme(uri.getScheme());
+ intentFilter.addDataAuthority(uri.getAuthority(), null);
+ intentFilter.addDataPath(uri.getPath(), PatternMatcher.PATTERN_LITERAL);
}
- return new IntentFilter(intent.getAction(), dataString);
+ return intentFilter;
} catch (Exception e) {
Log.e(TAG, "failed to get target intent filter " + e);
return null;