1ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen/* 2ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * Copyright (C) 2014 The Android Open Source Project 3ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * 4ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * Licensed under the Apache License, Version 2.0 (the "License"); 5ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * you may not use this file except in compliance with the License. 6ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * You may obtain a copy of the License at 7ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * 8ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * http://www.apache.org/licenses/LICENSE-2.0 9ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * 10ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * Unless required by applicable law or agreed to in writing, software 11ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * distributed under the License is distributed on an "AS IS" BASIS, 12ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * See the License for the specific language governing permissions and 14ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen * limitations under the License. 15ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen */ 16ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen 17ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazenpackage android.support.v4.app; 18ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen 19ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazenimport android.content.ClipData; 20ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazenimport android.content.ClipDescription; 21ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazenimport android.content.Intent; 2259d562bdab983469340a054bd3bc888034fa6bc8Shane Brennanimport android.net.Uri; 23ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazenimport android.os.Bundle; 248f886fe8c7e23fe6ccb8734167c960c2ed3429c3Alan Viveretteimport android.support.annotation.RequiresApi; 25ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen 2659d562bdab983469340a054bd3bc888034fa6bc8Shane Brennanimport java.util.ArrayList; 2759d562bdab983469340a054bd3bc888034fa6bc8Shane Brennanimport java.util.HashMap; 2859d562bdab983469340a054bd3bc888034fa6bc8Shane Brennanimport java.util.HashSet; 2959d562bdab983469340a054bd3bc888034fa6bc8Shane Brennanimport java.util.Map; 3059d562bdab983469340a054bd3bc888034fa6bc8Shane Brennanimport java.util.Set; 3159d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan 328f886fe8c7e23fe6ccb8734167c960c2ed3429c3Alan Viverette@RequiresApi(16) 33ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazenclass RemoteInputCompatJellybean { 34ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen /** Label used to denote the clip data type used for remote input transport */ 35ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen public static final String RESULTS_CLIP_LABEL = "android.remoteinput.results"; 36ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen 37ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen /** Extra added to a clip data intent object to hold the results bundle. */ 38ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen public static final String EXTRA_RESULTS_DATA = "android.remoteinput.resultsData"; 39ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen 4059d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan /** Extra added to a clip data intent object to hold the data results bundle. */ 4159d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan private static final String EXTRA_DATA_TYPE_RESULTS_DATA = 4259d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan "android.remoteinput.dataTypeResultsData"; 4359d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan 44ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen private static final String KEY_RESULT_KEY = "resultKey"; 45ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen private static final String KEY_LABEL = "label"; 46ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen private static final String KEY_CHOICES = "choices"; 47ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen private static final String KEY_ALLOW_FREE_FORM_INPUT = "allowFreeFormInput"; 48ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen private static final String KEY_EXTRAS = "extras"; 4959d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan private static final String KEY_ALLOWED_DATA_TYPES = "allowedDataTypes"; 50ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen 512bb98d48fdaf79a2bbd9d247da81a2bb9834dfc7Griff Hazen static RemoteInputCompatBase.RemoteInput fromBundle(Bundle data, 522bb98d48fdaf79a2bbd9d247da81a2bb9834dfc7Griff Hazen RemoteInputCompatBase.RemoteInput.Factory factory) { 5359d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan ArrayList<String> allowedDataTypesAsList = data.getStringArrayList(KEY_ALLOWED_DATA_TYPES); 5459d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan Set<String> allowedDataTypes = new HashSet<>(); 5559d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan if (allowedDataTypesAsList != null) { 5659d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan for (String type : allowedDataTypesAsList) { 5759d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan allowedDataTypes.add(type); 5859d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan } 5959d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan } 60ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen return factory.build(data.getString(KEY_RESULT_KEY), 61ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen data.getCharSequence(KEY_LABEL), 62ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen data.getCharSequenceArray(KEY_CHOICES), 63ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen data.getBoolean(KEY_ALLOW_FREE_FORM_INPUT), 6459d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan data.getBundle(KEY_EXTRAS), 6559d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan allowedDataTypes); 66ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen } 67ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen 68ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen static Bundle toBundle(RemoteInputCompatBase.RemoteInput remoteInput) { 69ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen Bundle data = new Bundle(); 70ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen data.putString(KEY_RESULT_KEY, remoteInput.getResultKey()); 71ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen data.putCharSequence(KEY_LABEL, remoteInput.getLabel()); 72ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen data.putCharSequenceArray(KEY_CHOICES, remoteInput.getChoices()); 73ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen data.putBoolean(KEY_ALLOW_FREE_FORM_INPUT, remoteInput.getAllowFreeFormInput()); 74ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen data.putBundle(KEY_EXTRAS, remoteInput.getExtras()); 7559d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan 7659d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan Set<String> allowedDataTypes = remoteInput.getAllowedDataTypes(); 7759d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan if (allowedDataTypes != null && !allowedDataTypes.isEmpty()) { 7859d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan ArrayList<String> allowedDataTypesAsList = new ArrayList<>(allowedDataTypes.size()); 7959d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan for (String type : allowedDataTypes) { 8059d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan allowedDataTypesAsList.add(type); 8159d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan } 8259d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan data.putStringArrayList(KEY_ALLOWED_DATA_TYPES, allowedDataTypesAsList); 8359d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan } 84ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen return data; 85ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen } 86ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen 872bb98d48fdaf79a2bbd9d247da81a2bb9834dfc7Griff Hazen static RemoteInputCompatBase.RemoteInput[] fromBundleArray(Bundle[] bundles, 882bb98d48fdaf79a2bbd9d247da81a2bb9834dfc7Griff Hazen RemoteInputCompatBase.RemoteInput.Factory factory) { 89ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen if (bundles == null) { 90ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen return null; 91ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen } 92ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen RemoteInputCompatBase.RemoteInput[] remoteInputs = factory.newArray(bundles.length); 93ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen for (int i = 0; i < bundles.length; i++) { 94ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen remoteInputs[i] = fromBundle(bundles[i], factory); 95ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen } 96ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen return remoteInputs; 97ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen } 98ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen 99ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen static Bundle[] toBundleArray(RemoteInputCompatBase.RemoteInput[] remoteInputs) { 100ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen if (remoteInputs == null) { 101ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen return null; 102ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen } 103ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen Bundle[] bundles = new Bundle[remoteInputs.length]; 104ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen for (int i = 0; i < remoteInputs.length; i++) { 105ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen bundles[i] = toBundle(remoteInputs[i]); 106ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen } 107ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen return bundles; 108ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen } 109ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen 110ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen static Bundle getResultsFromIntent(Intent intent) { 11159d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan Intent clipDataIntent = getClipDataIntentFromIntent(intent); 11259d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan if (clipDataIntent == null) { 113ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen return null; 114ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen } 11559d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan return clipDataIntent.getExtras().getParcelable(EXTRA_RESULTS_DATA); 11659d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan } 11759d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan 11859d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan static Map<String, Uri> getDataResultsFromIntent(Intent intent, String remoteInputResultKey) { 11959d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan Intent clipDataIntent = getClipDataIntentFromIntent(intent); 12059d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan if (clipDataIntent == null) { 121ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen return null; 122ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen } 12359d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan Map<String, Uri> results = new HashMap<>(); 12459d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan Bundle extras = clipDataIntent.getExtras(); 12559d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan for (String key : extras.keySet()) { 12659d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan if (key.startsWith(EXTRA_DATA_TYPE_RESULTS_DATA)) { 12759d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan String mimeType = key.substring(EXTRA_DATA_TYPE_RESULTS_DATA.length()); 12859d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan if (mimeType == null || mimeType.isEmpty()) { 12959d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan continue; 13059d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan } 13159d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan Bundle bundle = clipDataIntent.getBundleExtra(key); 13259d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan String uriStr = bundle.getString(remoteInputResultKey); 13359d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan if (uriStr == null || uriStr.isEmpty()) { 13459d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan continue; 13559d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan } 13659d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan results.put(mimeType, Uri.parse(uriStr)); 13759d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan } 138ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen } 13959d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan return results.isEmpty() ? null : results; 140ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen } 141ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen 142ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen static void addResultsToIntent(RemoteInputCompatBase.RemoteInput[] remoteInputs, Intent intent, 143ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen Bundle results) { 14459d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan Intent clipDataIntent = getClipDataIntentFromIntent(intent); 14559d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan if (clipDataIntent == null) { 14659d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan clipDataIntent = new Intent(); // First time we've added a result. 14759d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan } 14859d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan Bundle resultsBundle = clipDataIntent.getBundleExtra(EXTRA_RESULTS_DATA); 14959d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan if (resultsBundle == null) { 15059d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan resultsBundle = new Bundle(); 15159d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan } 152ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen for (RemoteInputCompatBase.RemoteInput remoteInput : remoteInputs) { 153ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen Object result = results.get(remoteInput.getResultKey()); 154ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen if (result instanceof CharSequence) { 155ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen resultsBundle.putCharSequence(remoteInput.getResultKey(), (CharSequence) result); 156ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen } 157ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen } 15859d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan clipDataIntent.putExtra(EXTRA_RESULTS_DATA, resultsBundle); 15959d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan intent.setClipData(ClipData.newIntent(RESULTS_CLIP_LABEL, clipDataIntent)); 16059d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan } 16159d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan 16259d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan /** 16359d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan * Same as {@link #addResultsToIntent} but for setting data results. 16459d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan * @param remoteInput The remote input for which results are being provided 16559d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan * @param intent The intent to add remote input results to. The {@link ClipData} 16659d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan * field of the intent will be modified to contain the results. 16759d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan * @param results A map of mime type to the Uri result for that mime type. 16859d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan */ 16959d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan public static void addDataResultToIntent(RemoteInput remoteInput, Intent intent, 17059d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan Map<String, Uri> results) { 17159d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan Intent clipDataIntent = getClipDataIntentFromIntent(intent); 17259d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan if (clipDataIntent == null) { 17359d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan clipDataIntent = new Intent(); // First time we've added a result. 17459d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan } 17559d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan for (Map.Entry<String, Uri> entry : results.entrySet()) { 17659d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan String mimeType = entry.getKey(); 17759d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan Uri uri = entry.getValue(); 17859d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan if (mimeType == null) { 17959d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan continue; 18059d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan } 18159d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan Bundle resultsBundle = 18259d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan clipDataIntent.getBundleExtra(getExtraResultsKeyForData(mimeType)); 18359d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan if (resultsBundle == null) { 18459d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan resultsBundle = new Bundle(); 18559d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan } 18659d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan resultsBundle.putString(remoteInput.getResultKey(), uri.toString()); 18759d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan clipDataIntent.putExtra(getExtraResultsKeyForData(mimeType), resultsBundle); 18859d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan } 18959d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan intent.setClipData(ClipData.newIntent(RESULTS_CLIP_LABEL, clipDataIntent)); 19059d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan } 19159d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan 19259d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan private static String getExtraResultsKeyForData(String mimeType) { 19359d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan return EXTRA_DATA_TYPE_RESULTS_DATA + mimeType; 19459d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan } 19559d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan 19659d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan private static Intent getClipDataIntentFromIntent(Intent intent) { 19759d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan ClipData clipData = intent.getClipData(); 19859d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan if (clipData == null) { 19959d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan return null; 20059d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan } 20159d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan ClipDescription clipDescription = clipData.getDescription(); 20259d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan if (!clipDescription.hasMimeType(ClipDescription.MIMETYPE_TEXT_INTENT)) { 20359d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan return null; 20459d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan } 20559d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan if (!clipDescription.getLabel().equals(RESULTS_CLIP_LABEL)) { 20659d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan return null; 20759d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan } 20859d562bdab983469340a054bd3bc888034fa6bc8Shane Brennan return clipData.getItemAt(0).getIntent(); 209ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen } 210ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen} 211