Merge "NFC API documentation." into jb-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
d42ad1da2f
@@ -299,7 +299,23 @@ public final class NfcActivityManager extends INdefPushCallback.Stub
|
||||
callback = state.uriCallback;
|
||||
}
|
||||
if (callback != null) {
|
||||
return callback.createBeamUris(mDefaultEvent);
|
||||
uris = callback.createBeamUris(mDefaultEvent);
|
||||
if (uris != null) {
|
||||
for (Uri uri : uris) {
|
||||
if (uri == null) {
|
||||
Log.e(TAG, "Uri not allowed to be null.");
|
||||
return null;
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
return uris;
|
||||
} else {
|
||||
return uris;
|
||||
}
|
||||
|
||||
@@ -584,17 +584,138 @@ public final class NfcAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
//TODO: make sure NFC service has permission for URI
|
||||
//TODO: see if we will eventually support multiple URIs
|
||||
//TODO: javadoc
|
||||
/**
|
||||
* Set one or more {@link Uri}s to send using Android Beam (TM). Every
|
||||
* Uri you provide must have either scheme 'file' or scheme 'content'.
|
||||
*
|
||||
* <p>For the data provided through this method, Android Beam tries to
|
||||
* switch to alternate transports such as Bluetooth to achieve a fast
|
||||
* transfer speed. Hence this method is very suitable
|
||||
* for transferring large files such as pictures or songs.
|
||||
*
|
||||
* <p>The receiving side will store the content of each Uri in
|
||||
* a file and present a notification to the user to open the file
|
||||
* with a {@link android.content.Intent} with action
|
||||
* {@link android.content.Intent#ACTION_VIEW}.
|
||||
* If multiple URIs are sent, the {@link android.content.Intent} will refer
|
||||
* to the first of the stored files.
|
||||
*
|
||||
* <p>This method may be called at any time before {@link Activity#onDestroy},
|
||||
* but the URI(s) are only made available for Android Beam when the
|
||||
* specified activity(s) are in resumed (foreground) state. The recommended
|
||||
* approach is to call this method during your Activity's
|
||||
* {@link Activity#onCreate} - see sample
|
||||
* code below. This method does not immediately perform any I/O or blocking work,
|
||||
* so is safe to call on your main thread.
|
||||
*
|
||||
* <p>{@link #setBeamPushUris} and {@link #setBeamPushUrisCallback}
|
||||
* have priority over both {@link #setNdefPushMessage} and
|
||||
* {@link #setNdefPushMessageCallback}.
|
||||
*
|
||||
* <p>If {@link #setBeamPushUris} is called with a null Uri array,
|
||||
* and/or {@link #setBeamPushUrisCallback} is called with a null callback,
|
||||
* then the Uri push will be completely disabled for the specified activity(s).
|
||||
*
|
||||
* <p>Code example:
|
||||
* <pre>
|
||||
* protected void onCreate(Bundle savedInstanceState) {
|
||||
* super.onCreate(savedInstanceState);
|
||||
* NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
|
||||
* if (nfcAdapter == null) return; // NFC not available on this device
|
||||
* nfcAdapter.setBeamPushUris(new Uri[] {uri1, uri2}, this);
|
||||
* }
|
||||
* </pre>
|
||||
* And that is it. Only one call per activity is necessary. The Android
|
||||
* OS will automatically release its references to the Uri(s) and the
|
||||
* Activity object when it is destroyed if you follow this pattern.
|
||||
*
|
||||
* <p>If your Activity wants to dynamically supply Uri(s),
|
||||
* then set a callback using {@link #setBeamPushUrisCallback} instead
|
||||
* of using this method.
|
||||
*
|
||||
* <p class="note">Do not pass in an Activity that has already been through
|
||||
* {@link Activity#onDestroy}. This is guaranteed if you call this API
|
||||
* during {@link Activity#onCreate}.
|
||||
*
|
||||
* <p class="note">Requires the {@link android.Manifest.permission#NFC} permission.
|
||||
*
|
||||
* @param uris an array of Uri(s) to push over Android Beam
|
||||
* @param activity activity for which the Uri(s) will be pushed
|
||||
*/
|
||||
public void setBeamPushUris(Uri[] uris, Activity activity) {
|
||||
if (activity == null) {
|
||||
throw new NullPointerException("activity cannot be null");
|
||||
}
|
||||
if (uris != null) {
|
||||
for (Uri uri : uris) {
|
||||
if (uri == null) throw new NullPointerException("Uri not " +
|
||||
"allowed to be null");
|
||||
String scheme = uri.getScheme();
|
||||
if (scheme == null || (!scheme.equalsIgnoreCase("file") &&
|
||||
!scheme.equalsIgnoreCase("content"))) {
|
||||
throw new IllegalArgumentException("URI needs to have " +
|
||||
"either scheme file or scheme content");
|
||||
}
|
||||
}
|
||||
}
|
||||
mNfcActivityManager.setNdefPushContentUri(activity, uris);
|
||||
}
|
||||
|
||||
// TODO javadoc
|
||||
/**
|
||||
* Set a callback that will dynamically generate one or more {@link Uri}s
|
||||
* to send using Android Beam (TM). Every Uri the callback provides
|
||||
* must have either scheme 'file' or scheme 'content'.
|
||||
*
|
||||
* <p>For the data provided through this callback, Android Beam tries to
|
||||
* switch to alternate transports such as Bluetooth to achieve a fast
|
||||
* transfer speed. Hence this method is very suitable
|
||||
* for transferring large files such as pictures or songs.
|
||||
*
|
||||
* <p>The receiving side will store the content of each Uri in
|
||||
* a file and present a notification to the user to open the file
|
||||
* with a {@link android.content.Intent} with action
|
||||
* {@link android.content.Intent#ACTION_VIEW}.
|
||||
* If multiple URIs are sent, the {@link android.content.Intent} will refer
|
||||
* to the first of the stored files.
|
||||
*
|
||||
* <p>This method may be called at any time before {@link Activity#onDestroy},
|
||||
* but the URI(s) are only made available for Android Beam when the
|
||||
* specified activity(s) are in resumed (foreground) state. The recommended
|
||||
* approach is to call this method during your Activity's
|
||||
* {@link Activity#onCreate} - see sample
|
||||
* code below. This method does not immediately perform any I/O or blocking work,
|
||||
* so is safe to call on your main thread.
|
||||
*
|
||||
* <p>{@link #setBeamPushUris} and {@link #setBeamPushUrisCallback}
|
||||
* have priority over both {@link #setNdefPushMessage} and
|
||||
* {@link #setNdefPushMessageCallback}.
|
||||
*
|
||||
* <p>If {@link #setBeamPushUris} is called with a null Uri array,
|
||||
* and/or {@link #setBeamPushUrisCallback} is called with a null callback,
|
||||
* then the Uri push will be completely disabled for the specified activity(s).
|
||||
*
|
||||
* <p>Code example:
|
||||
* <pre>
|
||||
* protected void onCreate(Bundle savedInstanceState) {
|
||||
* super.onCreate(savedInstanceState);
|
||||
* NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
|
||||
* if (nfcAdapter == null) return; // NFC not available on this device
|
||||
* nfcAdapter.setBeamPushUrisCallback(callback, this);
|
||||
* }
|
||||
* </pre>
|
||||
* And that is it. Only one call per activity is necessary. The Android
|
||||
* OS will automatically release its references to the Uri(s) and the
|
||||
* Activity object when it is destroyed if you follow this pattern.
|
||||
*
|
||||
* <p class="note">Do not pass in an Activity that has already been through
|
||||
* {@link Activity#onDestroy}. This is guaranteed if you call this API
|
||||
* during {@link Activity#onCreate}.
|
||||
*
|
||||
* <p class="note">Requires the {@link android.Manifest.permission#NFC} permission.
|
||||
*
|
||||
* @param callback callback, or null to disable
|
||||
* @param activity activity for which the Uri(s) will be pushed
|
||||
*/
|
||||
public void setBeamPushUrisCallback(CreateBeamUrisCallback callback, Activity activity) {
|
||||
if (activity == null) {
|
||||
throw new NullPointerException("activity cannot be null");
|
||||
@@ -663,6 +784,10 @@ public final class NfcAdapter {
|
||||
* {@link Activity#onDestroy}. This is guaranteed if you call this API
|
||||
* during {@link Activity#onCreate}.
|
||||
*
|
||||
* <p class="note">For sending large content such as pictures and songs,
|
||||
* consider using {@link #setBeamPushUris}, which switches to alternate transports
|
||||
* such as Bluetooth to achieve a fast transfer rate.
|
||||
*
|
||||
* <p class="note">Requires the {@link android.Manifest.permission#NFC} permission.
|
||||
*
|
||||
* @param message NDEF message to push over NFC, or null to disable
|
||||
@@ -753,7 +878,9 @@ public final class NfcAdapter {
|
||||
* <p class="note">Do not pass in an Activity that has already been through
|
||||
* {@link Activity#onDestroy}. This is guaranteed if you call this API
|
||||
* during {@link Activity#onCreate}.
|
||||
*
|
||||
* <p class="note">For sending large content such as pictures and songs,
|
||||
* consider using {@link #setBeamPushUris}, which switches to alternate transports
|
||||
* such as Bluetooth to achieve a fast transfer rate.
|
||||
* <p class="note">Requires the {@link android.Manifest.permission#NFC} permission.
|
||||
*
|
||||
* @param callback callback, or null to disable
|
||||
|
||||
Reference in New Issue
Block a user