Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5aadd5b6 authored by Andres Morales's avatar Andres Morales Committed by Android (Google) Code Review
Browse files

Merge "Add UserHandle to BeamShareData" into lmp-mr1-dev

parents fe79d62d 56f299b8
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -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
+10 −3
Original line number Diff line number Diff line
@@ -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 */