summaryrefslogtreecommitdiffstats
path: root/core/java/android/nfc
diff options
context:
space:
mode:
authorAndres Morales <anmorales@google.com>2014-10-31 08:26:33 -0700
committerAndres Morales <anmorales@google.com>2014-11-03 11:44:10 -0800
commit56f299b87a891db38691cc0260f761c3ce8ef9ac (patch)
treed2554834dfec2d61001138a5ee93c996e1c182c2 /core/java/android/nfc
parent808fe6f99fba753e0ec4c5e90de0ff7a2140e8a6 (diff)
downloadframeworks_base-56f299b87a891db38691cc0260f761c3ce8ef9ac.zip
frameworks_base-56f299b87a891db38691cc0260f761c3ce8ef9ac.tar.gz
frameworks_base-56f299b87a891db38691cc0260f761c3ce8ef9ac.tar.bz2
Add UserHandle to BeamShareData
Allows NfcService to start the beam transfer process in the correct user. Bug:17966846 Change-Id: Ie98c98e763f0c2eabf11afda645c421b0332a2f6
Diffstat (limited to 'core/java/android/nfc')
-rw-r--r--core/java/android/nfc/BeamShareData.java9
-rw-r--r--core/java/android/nfc/NfcActivityManager.java13
2 files changed, 17 insertions, 5 deletions
diff --git a/core/java/android/nfc/BeamShareData.java b/core/java/android/nfc/BeamShareData.java
index c30ba14..918ec3d 100644
--- a/core/java/android/nfc/BeamShareData.java
+++ b/core/java/android/nfc/BeamShareData.java
@@ -3,6 +3,7 @@ package android.nfc;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
+import android.os.UserHandle;
/**
* Class to IPC data to be shared over Android Beam.
@@ -14,11 +15,13 @@ import android.os.Parcelable;
public final class BeamShareData implements Parcelable {
public final NdefMessage ndefMessage;
public final Uri[] uris;
+ public final UserHandle userHandle;
public final int flags;
- public BeamShareData(NdefMessage msg, Uri[] uris, int flags) {
+ public BeamShareData(NdefMessage msg, Uri[] uris, UserHandle userHandle, int flags) {
this.ndefMessage = msg;
this.uris = uris;
+ this.userHandle = userHandle;
this.flags = flags;
}
@@ -35,6 +38,7 @@ public final class BeamShareData implements Parcelable {
if (urisLength > 0) {
dest.writeTypedArray(uris, 0);
}
+ dest.writeParcelable(userHandle, 0);
dest.writeInt(this.flags);
}
@@ -49,9 +53,10 @@ public final class BeamShareData implements Parcelable {
uris = new Uri[numUris];
source.readTypedArray(uris, Uri.CREATOR);
}
+ UserHandle userHandle = source.readParcelable(UserHandle.class.getClassLoader());
int flags = source.readInt();
- return new BeamShareData(msg, uris, flags);
+ return new BeamShareData(msg, uris, userHandle, flags);
}
@Override
diff --git a/core/java/android/nfc/NfcActivityManager.java b/core/java/android/nfc/NfcActivityManager.java
index 8643f2e..dd9765d 100644
--- a/core/java/android/nfc/NfcActivityManager.java
+++ b/core/java/android/nfc/NfcActivityManager.java
@@ -18,12 +18,14 @@ package android.nfc;
import android.app.Activity;
import android.app.Application;
+import android.content.ContentProvider;
import android.content.Intent;
import android.net.Uri;
import android.nfc.NfcAdapter.ReaderCallback;
import android.os.Binder;
import android.os.Bundle;
import android.os.RemoteException;
+import android.os.UserHandle;
import android.util.Log;
import java.util.ArrayList;
@@ -350,19 +352,24 @@ public final class NfcActivityManager extends IAppCallback.Stub
if (urisCallback != null) {
uris = urisCallback.createBeamUris(mDefaultEvent);
if (uris != null) {
+ ArrayList<Uri> validUris = new ArrayList<Uri>();
for (Uri uri : uris) {
if (uri == null) {
Log.e(TAG, "Uri not allowed to be null.");
- return null;
+ continue;
}
String scheme = uri.getScheme();
if (scheme == null || (!scheme.equalsIgnoreCase("file") &&
!scheme.equalsIgnoreCase("content"))) {
Log.e(TAG, "Uri needs to have " +
"either scheme file or scheme content");
- return null;
+ continue;
}
+ uri = ContentProvider.maybeAddUserId(uri, UserHandle.myUserId());
+ validUris.add(uri);
}
+
+ uris = validUris.toArray(new Uri[validUris.size()]);
}
}
if (uris != null && uris.length > 0) {
@@ -372,7 +379,7 @@ public final class NfcActivityManager extends IAppCallback.Stub
Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
}
- return new BeamShareData(message, uris, flags);
+ return new BeamShareData(message, uris, UserHandle.CURRENT, flags);
}
/** Callback from NFC service, usually on binder thread */