下面列出了android.content.Intent#getParcelableArrayExtra ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private void handleNfcIntent(Intent NfcIntent) {
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(NfcIntent.getAction())) {
Parcelable[] receivedArray =
NfcIntent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
if(receivedArray != null) {
NdefMessage receivedMessage = (NdefMessage) receivedArray[0];
NdefRecord[] attachedRecords = receivedMessage.getRecords();
for (NdefRecord record: attachedRecords) {
String string = new String(record.getPayload());
// Make sure we don't pass along our AAR (Android Application Record)
if (string.equals(getPackageName())) continue;
addFriend(string);
}
}
}
}
/**
* {@inheritDoc}
*/
@Override
public SparseArray<String> readFromTagWithSparseArray(Intent nfcDataIntent) {
Parcelable[] messages = nfcDataIntent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
SparseArray<String> resultMap = messages != null ? new SparseArray<String>(messages.length) : new SparseArray<String>();
if (messages == null) {
return resultMap;
}
for (Parcelable message : messages) {
for (NdefRecord record : ((NdefMessage) message).getRecords()) {
byte type = retrieveTypeByte(record.getPayload());
String i = resultMap.get(type);
if (i == null) {
resultMap.put(type, parseAccordingToType(record));
}
}
}
return resultMap;
}
/**
* 读取NFC标签文本数据
*/
private void readNfcTag(Intent intent) {
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
Parcelable[] rawMsgs = intent.getParcelableArrayExtra(
NfcAdapter.EXTRA_NDEF_MESSAGES);
NdefMessage msgs[] = null;
int contentSize = 0;
if (rawMsgs != null) {
msgs = new NdefMessage[rawMsgs.length];
for (int i = 0; i < rawMsgs.length; i++) {
msgs[i] = (NdefMessage) rawMsgs[i];
contentSize += msgs[i].toByteArray().length;
}
}
try {
if (msgs != null) {
NdefRecord record = msgs[0].getRecords()[0];
String textRecord = parseTextRecord(record);
mTagText += textRecord + "\n\ntext\n" + contentSize + " bytes";
}
} catch (Exception e) {
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (resultCode == Activity.RESULT_OK) {
if (requestCode == INTENT_REQUEST_GET_IMAGES) {
Parcelable[] parcelableUris = intent.getParcelableArrayExtra(ImagePickerActivity.EXTRA_IMAGE_URIS);
if (parcelableUris == null) {
return;
}
// Java doesn't allow array casting, this is a little hack
Uri[] uris = new Uri[parcelableUris.length];
System.arraycopy(parcelableUris, 0, uris, 0, parcelableUris.length);
if (uris != null) {
hitCreateNewsApi(uris[0]);
}
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (resultCode == Activity.RESULT_OK) {
if (requestCode == INTENT_REQUEST_GET_IMAGES) {
Parcelable[] parcelableUris = intent.getParcelableArrayExtra(ImagePickerActivity.EXTRA_IMAGE_URIS);
if (parcelableUris == null) {
return;
}
// Java doesn't allow array casting, this is a little hack
Uri[] uris = new Uri[parcelableUris.length];
System.arraycopy(parcelableUris, 0, uris, 0, parcelableUris.length);
if (uris != null) {
uri = uris[0];
ivNewsImage.setImageURI(uri);
}
}
}
}
@Override
protected void onResponseReceived(final Intent request, final Intent response) {
// エラーが返ってきた場合には、サービスには登録しない。
int result = response.getIntExtra(IntentDConnectMessage.EXTRA_RESULT, -1);
if (result == IntentDConnectMessage.RESULT_OK) {
// 送られてきたサービスIDにデバイスプラグインのIDを付加して保存
Parcelable[] services = response.getParcelableArrayExtra(
ServiceDiscoveryProfileConstants.PARAM_SERVICES);
if (services != null) {
for (Parcelable p : services) {
Bundle b = (Bundle) p;
String id = b.getString(ServiceDiscoveryProfile.PARAM_ID);
b.putString(ServiceDiscoveryProfile.PARAM_ID, mPluginMgr.appendServiceId(mDevicePlugin, id));
mServices.add(b);
}
}
}
// レスポンス個数を追加
synchronized (mRequestCodeArray) {
mRequestCodeArray.remove(mRequestCode);
}
mCountDownLatch.countDown();
}
private void processIntent(Intent i) {
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(i.getAction())) {
Parcelable[] rawMsgs = i.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
NdefMessage msg = (NdefMessage) rawMsgs[0];
String url = new String(msg.getRecords()[0].getPayload());
Utils.debugLog(TAG, "Got this URL: " + url);
Toast.makeText(this, "Got this URL: " + url, Toast.LENGTH_LONG).show();
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
intent.setClass(this, ManageReposActivity.class);
startActivity(intent);
finish();
}
}
NdefMessage[] getNdefMessages(Intent intent) {
// Parse the intent
NdefMessage[] msgs = null;
String action = intent.getAction();
if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)
|| NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {
Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
if (rawMsgs != null) {
msgs = new NdefMessage[rawMsgs.length];
for (int i = 0; i < rawMsgs.length; i++) {
msgs[i] = (NdefMessage) rawMsgs[i];
}
} else {
// Unknown tag type
byte[] empty = new byte[] {};
NdefRecord record = new NdefRecord(NdefRecord.TNF_UNKNOWN, empty, empty, empty);
NdefMessage msg = new NdefMessage(new NdefRecord[] {
record
});
msgs = new NdefMessage[] {
msg
};
}
} else {
Log.d(TAG, "Unknown intent.");
finish();
}
return msgs;
}
public static Pair<String, String> parseIntent(Intent intent) throws Exception {
Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
Parcelable[] messages = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
if (tagFromIntent != null && messages != null) {
return getCameraWifiSettingsFromTag(tagFromIntent, messages);
}
return null;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
int userId = intent.getIntExtra(Constants.EXTRA_USER_HANDLE, VUserHandle.getCallingUserId());
mOptions = intent.getParcelableExtra(EXTRA_DATA);
mResultWho = intent.getStringExtra(EXTRA_WHO);
mRequestCode = intent.getIntExtra(EXTRA_REQUEST_CODE, 0);
Parcelable targetParcelable = intent.getParcelableExtra(Intent.EXTRA_INTENT);
if (!(targetParcelable instanceof Intent)) {
VLog.w("ChooseActivity", "Target is not an intent: " + targetParcelable);
finish();
return;
}
Intent target = (Intent) targetParcelable;
CharSequence title = intent.getCharSequenceExtra(Intent.EXTRA_TITLE);
if (title == null) {
title = getString(R.string.choose);
}
Parcelable[] pa = intent.getParcelableArrayExtra(Intent.EXTRA_INITIAL_INTENTS);
Intent[] initialIntents = null;
if (pa != null) {
initialIntents = new Intent[pa.length];
for (int i = 0; i < pa.length; i++) {
if (!(pa[i] instanceof Intent)) {
VLog.w("ChooseActivity", "Initial intent #" + i
+ " not an Intent: " + pa[i]);
finish();
return;
}
initialIntents[i] = (Intent) pa[i];
}
}
super.onCreate(savedInstanceState, target, title, initialIntents, null, false, userId);
}
/**
* Just like {@link Intent#getParcelableArrayExtra(String)} but doesn't throw exceptions.
*/
public static Parcelable[] safeGetParcelableArrayExtra(Intent intent, String name) {
try {
return intent.getParcelableArrayExtra(name);
} catch (Throwable t) {
Log.e(TAG, "getParcelableArrayExtra failed on intent " + intent);
return null;
}
}
private String readNfcTagPayload(Intent intent) {
Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
if (rawMsgs != null) {
NdefMessage[] msgs = new NdefMessage[rawMsgs.length];
for (int i = 0; i < rawMsgs.length; i++) {
msgs[i] = (NdefMessage) rawMsgs[i];
}
return new String(msgs[0].getRecords()[0].getPayload());
}
return null;
}
/**
* Just like {@link Intent#getParcelableArrayExtra(String)} but doesn't throw exceptions.
*/
public static Parcelable[] safeGetParcelableArrayExtra(Intent intent, String name) {
try {
return intent.getParcelableArrayExtra(name);
} catch (Throwable t) {
Log.e(TAG, "getParcelableArrayExtra failed on intent " + intent);
return null;
}
}
private void readTagFromIntent(Intent intent) {
if (intent != null){
String action = intent.getAction();
/*if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)) {
uidRead = true;
String uid = ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID));
onTagReadListener.onUidRead(uid);
}*/
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {
tagRead = true;
// get NDEF tag details
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
if (tag != null) {
Ndef ndefTag = Ndef.get(tag);
//int tagSize = ndefTag.getMaxSize(); // tag size
tagIsWritable = ndefTag.isWritable(); // is tag writable?
//String tagType = ndefTag.getType(); // tag type
Parcelable[] rawMessages = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
if (rawMessages != null) {
NdefRecord[] records = ((NdefMessage) rawMessages[0]).getRecords();
String text = ndefRecordToString(records[0]);
onTagReadListener.onTagRead(text);
}
}
}
}
}
@TargetApi(VERSION_CODES.M)
private void updateRestrictionEntryFromResultIntent(RestrictionEntry restrictionEntry,
Intent intent) {
switch (restrictionEntry.getType()) {
case RestrictionEntry.TYPE_BOOLEAN:
restrictionEntry.setSelectedState(intent.getBooleanExtra(RESULT_VALUE, false));
break;
case RestrictionEntry.TYPE_INTEGER:
restrictionEntry.setIntValue(intent.getIntExtra(RESULT_VALUE, 0));
break;
case RestrictionEntry.TYPE_STRING:
restrictionEntry.setSelectedString(intent.getStringExtra(RESULT_VALUE));
break;
case RestrictionEntry.TYPE_MULTI_SELECT:
restrictionEntry.setAllSelectedStrings(intent.getStringArrayExtra(RESULT_VALUE));
break;
case RestrictionEntry.TYPE_BUNDLE: {
Bundle bundle = intent.getBundleExtra(RESULT_VALUE);
restrictionEntry.setRestrictions(convertBundleToRestrictions(bundle));
break;
}
case RestrictionEntry.TYPE_BUNDLE_ARRAY: {
Parcelable[] bundleArray = intent.getParcelableArrayExtra(RESULT_VALUE);
RestrictionEntry[] restrictionEntryArray = new RestrictionEntry[bundleArray.length];
for (int i = 0; i< bundleArray.length; i++) {
restrictionEntryArray[i] = RestrictionEntry.createBundleEntry(String.valueOf(i),
convertBundleToRestrictions((Bundle) bundleArray[i]));
}
restrictionEntry.setRestrictions(restrictionEntryArray);
break;
}
}
}
private static byte[] getNFCPayload(final Intent intent) {
final Parcelable[] extra = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
return ((NdefMessage) extra[0]).getRecords()[0].getPayload();
}
@Override
protected void onHandleIntent(Intent intent) {
resultReceiver = intent.getParcelableExtra(UploadResultReceiver.EXTRA_KEY);
Parcelable[] uploadItems = intent.getParcelableArrayExtra(UploadResultReceiver.EXTRA_FILES_KEY);
Bundle extras = intent.getExtras();
String user = extras.getString(PREFS_KEY_USER);
String password = extras.getString(PREFS_KEY_PWD);
try {
String action = intent.getAction();
if (action != null && action.equals(UploadResultReceiver.UPLOAD_ACTION)) {
updateBundle = new Bundle();
for (Parcelable p : uploadItems) {
if (p instanceof IUploadable) {
IUploadable uploadable = (IUploadable) p;
if (isCancelled) {
sendError(getString(R.string.upload_Canceled));
return;
}
File sourceFile = new File(uploadable.getDestinationPath());
if (!sourceFile.exists()) {
updateBundle.putString(PROGRESS_MESSAGE_KEY, getString(R.string.upload_NotFound) + sourceFile.getName());
resultReceiver.send(UploadResultReceiver.RESULT_CODE, updateBundle);
pause();
continue;
}
String url = uploadable.getUploadUrl();
updateBundle.putString(PROGRESS_MESSAGE_KEY, getString(R.string.upload_Uploading) + sourceFile.getName());
updateBundle.putInt(PROGRESS_KEY, 0);
resultReceiver.send(UploadResultReceiver.RESULT_CODE, updateBundle);
try {
String response = sendFileViaPost(url, sourceFile, "document", user, password);
updateBundle.putInt(PROGRESS_KEY, max);
resultReceiver.send(UploadResultReceiver.RESULT_CODE, updateBundle);
pause();
} catch (Exception e) {
sendError(getString(R.string.upload_Error) + e.getLocalizedMessage());
return;
} finally {
if (GPLog.LOG)
GPLog.addLogEntry("UploadFile", getString(R.string.upload_Uploaded) + sourceFile.getName());
}
}
}
}
sendDone();
} finally {
isCancelled = false;
}
}
public static File_POJO[] getFiles(Intent workIntent) {
Parcelable[] parcelables = workIntent.getParcelableArrayExtra(FILES);
return File_POJO.generateArray(parcelables);
}
private static byte[] getNFCPayload(final Intent intent) {
final Parcelable[] extra = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
return ((NdefMessage) extra[0]).getRecords()[0].getPayload();
}
public static Intent convert(Intent input) {
Intent output = new Intent();
output.setAction(input.getAction());
// detect supported types
if(input.hasExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)) {
Parcelable[] messages = input.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
Bundle extras = new Bundle();
extras.putParcelableArray(NfcAdapter.EXTRA_NDEF_MESSAGES, messages);
output.putExtras(extras);
}
if(input.hasExtra(NfcAdapter.EXTRA_TAG)) {
android.nfc.Tag tag = (android.nfc.Tag) input.getParcelableExtra(NfcAdapter.EXTRA_TAG);
output.putExtra(NfcAdapter.EXTRA_TAG, new TagWrapper(tag));
}
if(input.hasExtra(NfcAdapter.EXTRA_AID)) {
output.putExtra(NfcAdapter.EXTRA_AID, input.getParcelableExtra(NfcAdapter.EXTRA_AID));
}
if(input.hasExtra(NfcAdapter.EXTRA_ID)) {
byte[] id = input.getByteArrayExtra(NfcAdapter.EXTRA_ID);
output.putExtra(NfcAdapter.EXTRA_ID, id);
}
// TODO forward all types
return output;
}