android.content.Intent#getClipData ( )源码实例Demo

下面列出了android.content.Intent#getClipData ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: android_9.0.0_r45   文件: GrantedUriPermissions.java
public static GrantedUriPermissions createFromIntent(IActivityManager am, Intent intent,
        int sourceUid, String targetPackage, int targetUserId, String tag) {
    int grantFlags = intent.getFlags();
    if (!checkGrantFlags(grantFlags)) {
        return null;
    }

    GrantedUriPermissions perms = null;

    Uri data = intent.getData();
    if (data != null) {
        perms = grantUri(am, data, sourceUid, targetPackage, targetUserId, grantFlags, tag,
                perms);
    }

    ClipData clip = intent.getClipData();
    if (clip != null) {
        perms = grantClip(am, clip, sourceUid, targetPackage, targetUserId, grantFlags, tag,
                perms);
    }

    return perms;
}
 
源代码2 项目: belvedere   文件: MediaSource.java
/**
 * Extract {@link Uri} from an {@link Intent} that comes back from a gallery
 * or the android document picker.
 *
 * <p>
 *      If the user selects multiple media files, it's necessary to check if
 *      {@link Intent#getClipData()} contains data. Support for selecting multiple
 *      files was introduced with Android Jelly Bean.
 *      {@link android.os.Build.VERSION_CODES#JELLY_BEAN}
 *      <br>
 *      A single selected item is available by calling {@link Intent#getData()}.
 *      <br>
 *      Pretty messed up :/
 * </p>
 *
 * @param intent The returned {@link Intent}, containing {@link Uri} to the selected
 *               media
 * @return A list of {link Uri}
 */
@SuppressLint("NewApi")
private List<Uri> extractUrisFromIntent(Intent intent){
    final List<Uri> images = new ArrayList<>();

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN && intent.getClipData() != null) {
        final ClipData clipData = intent.getClipData();

        for (int i = 0, itemCount = clipData.getItemCount(); i < itemCount; i++) {
            final ClipData.Item itemAt = clipData.getItemAt(i);

            if (itemAt.getUri() != null) {
                images.add(itemAt.getUri());
            }
        }
    } else if(intent.getData() != null){
        images.add(intent.getData());
    }

    return images;
}
 
源代码3 项目: styT   文件: Main2Activity.java
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void onActivityResultAboveL(int requestCode, int resultCode, Intent intent) {
    if (requestCode != FILE_CHOOSER_RESULT_CODE || uploadMessageAboveL == null) return;
    Uri[] results = null;
    if (resultCode == AppCompatActivity.RESULT_OK) {
        if (intent != null) {
            String dataString = intent.getDataString();
            ClipData clipData = intent.getClipData();
            if (clipData != null) {
                results = new Uri[clipData.getItemCount()];
                for (int i = 0; i < clipData.getItemCount(); i++) {
                    ClipData.Item item = clipData.getItemAt(i);
                    results[i] = item.getUri();
                }
            }
            if (dataString != null)
                results = new Uri[]{Uri.parse(dataString)};
        }
    }
    uploadMessageAboveL.onReceiveValue(results);
    uploadMessageAboveL = null;
}
 
源代码4 项目: RxGallery   文件: RxGalleryActivity.java
private ArrayList<Uri> handleGallery(Intent data) {
    ArrayList<Uri> uris = new ArrayList<>();
    if (data.getData() != null) { // Single select
        uris.add(data.getData());
    } else { // Multi select
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
            ClipData clipData = data.getClipData();
            if (clipData != null) {
                for (int i = 0; i < clipData.getItemCount(); i++) {
                    uris.add(clipData.getItemAt(i).getUri());
                }
            }
        }
    }
    return uris;
}
 
源代码5 项目: SAI   文件: LegacyInstallerFragment.java
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == REQUEST_CODE_GET_FILES) {
        if (resultCode != Activity.RESULT_OK || data == null)
            return;

        if (data.getData() != null) {
            mViewModel.installPackagesFromContentProviderZip(data.getData());
            return;
        }

        if (data.getClipData() != null) {
            ClipData clipData = data.getClipData();
            List<Uri> apkUris = new ArrayList<>(clipData.getItemCount());

            for (int i = 0; i < clipData.getItemCount(); i++)
                apkUris.add(clipData.getItemAt(i).getUri());

            mViewModel.installPackagesFromContentProviderUris(apkUris);
        }
    }
}
 
源代码6 项目: HaoReader   文件: SearchBookPresenterImpl.java
@Override
public void fromIntentSearch(Intent intent) {
    String keyWord = null;
    if (intent != null) {
        keyWord = intent.getStringExtra("searchKey");
        if (keyWord == null && intent.getClipData() != null && intent.getClipData().getItemCount() > 0) {
            ClipData.Item item = intent.getClipData().getItemAt(0);
            keyWord = StringUtils.valueOf(item.getText()).trim();

            keyWord = TextProcessor.formatKeyword(keyWord);
        }

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && keyWord == null && Intent.ACTION_PROCESS_TEXT.equals(intent.getAction())) {
            String type = intent.getType();
            if ("text/plain".equals(type)) {
                keyWord = TextProcessor.formatKeyword(intent.getStringExtra(Intent.EXTRA_PROCESS_TEXT));
            }
        }
    }

    mView.searchBook(keyWord);
}
 
源代码7 项目: ForPDA   文件: FilePickHelper.java
public static List<RequestFile> onActivityResult(Context context, Intent data) {
    List<RequestFile> files = new ArrayList<>();
    RequestFile tempFile;
    Log.d(LOG_TAG, "onActivityResult " + data);
    if (data.getData() == null) {
        if (data.getClipData() != null) {
            for (int i = 0; i < data.getClipData().getItemCount(); i++) {
                tempFile = createFile(context, data.getClipData().getItemAt(i).getUri());
                if (tempFile != null) files.add(tempFile);
            }
        }
    } else {
        tempFile = createFile(context, data.getData());
        if (tempFile != null) files.add(tempFile);
    }
    return files;
}
 
源代码8 项目: androidnative.pri   文件: ImagePicker.java
static private void importImage(Intent data) {
    Uri uri = data.getData();

    Log.d(TAG,"importImage: uri:" + uri);
    Log.d(TAG,"importImage: type: " + data.getType());

    if (data.getClipData() != null) {
        importImageFromClipData(data);
    } else if (uri != null ) {
        if (uri.getScheme().equals("file")) {
            importImageFromFileUri(uri);
        } else {
            importImageFromContentUri(uri);
        }
    }

}
 
源代码9 项目: quickimagepick   文件: QiPick.java
@SuppressLint("NewApi")
private static void handleResultFromDocuments(final int pRequestType, @NonNull final PickCallback pCallback, @Nullable final Intent pData) {

    final Uri pictureUri = pData == null ? null : pData.getData();

    if (pictureUri == null) {

        final ClipData clipData = API_18 ? pData != null ? pData.getClipData() : null : null;
        if (clipData != null) {

            final ArrayList<Uri> uris = new ArrayList<>();
            for (int i = 0; i < clipData.getItemCount(); i++) {

                final ClipData.Item item = clipData.getItemAt(i);

                final Uri uri = item.getUri();

                if (uri != null) {
                    uris.add(uri);
                }

            }

            if (uris.isEmpty()) {
                pCallback.onError(PickSource.DOCUMENTS, pRequestType, ERR_DOCS_NULL_RESULT);
            } else {
                pCallback.onMultipleImagesPicked(pRequestType, uris);
            }

        } else {
            pCallback.onError(PickSource.DOCUMENTS, pRequestType, ERR_DOCS_NULL_RESULT);
        }

    } else {
        pCallback.onImagePicked(PickSource.DOCUMENTS, pRequestType, pictureUri);
    }

}
 
源代码10 项目: cloudinary_android   文件: MainActivity.java
private void uploadFromIntentUri(Intent data) {
    Uri uri = data.getData();
    if (uri != null) {
        handleUri(uri, data.getFlags());
    } else if (data.getClipData() != null) {
        ClipData clip = data.getClipData();
        for (int i = 0; i < clip.getItemCount(); i++) {
            handleUri(clip.getItemAt(i).getUri(), data.getFlags());
        }
    }
}
 
源代码11 项目: hash-checker   文件: MainActivity.java
@Override
public void create() {
    Intent intent = getIntent();
    String scheme = null;
    ClipData clipData = null;
    if (intent != null) {
        scheme = intent.getScheme();
        clipData = intent.getClipData();
    }
    Uri externalFileUri = null;
    if (clipData != null) {
        externalFileUri = clipData.getItemAt(0).getUri();
    }

    HashCalculatorFragment mainFragment = new HashCalculatorFragment();
    if (scheme != null && scheme.compareTo(ContentResolver.SCHEME_CONTENT) == 0) {
        mainFragment.setArguments(getConfiguredBundleWithDataUri(intent.getData()));
        SettingsHelper.setGenerateFromShareIntentMode(this, true);
    } else if (externalFileUri != null) {
        mainFragment.setArguments(getConfiguredBundleWithDataUri(externalFileUri));
        SettingsHelper.setGenerateFromShareIntentMode(this, true);
    } else {
        mainFragment.setArguments(getBundleForShortcutAction(intent.getAction()));
        SettingsHelper.setGenerateFromShareIntentMode(this, false);
    }

    showFragment(mainFragment);
}
 
源代码12 项目: zulip-android   文件: ZulipActivity.java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_TAKE_PHOTO && resultCode == RESULT_OK) {
        // send file path to PhotoSendActivity
        Intent photoSendIntent = new Intent(this, PhotoSendActivity.class);
        photoSendIntent.putExtra(Intent.EXTRA_TEXT, mCurrentPhotoPath);
        startActivity(photoSendIntent);

        // activity transition animation
        ActivityTransitionAnim.transition(ZulipActivity.this);
    } else if (requestCode == REQUEST_PICK_FILE && resultCode == RESULT_OK) {
        List<Uri> fileUris = new ArrayList<>();
        if (data.getData() != null) {
            fileUris.add(data.getData());
        }
        // intent.getClipData was added in api 16
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
            ClipData clipData = data.getClipData();
            if (clipData != null) {
                for (int i = 0; i < clipData.getItemCount(); i++) {
                    fileUris.add(clipData.getItemAt(i).getUri());
                }
            }
        }
        for (Uri file : fileUris) {
            handleSentFile(file);
        }
    }
}
 
源代码13 项目: mage-android   文件: ProfileActivity.java
@TargetApi(16)
private List<Uri> getClipDataUris(Intent intent) {
	List<Uri> uris = new ArrayList<>();
	if (Build.VERSION.SDK_INT >= 16) {
		ClipData cd = intent.getClipData();
		if (cd != null) {
			for (int i = 0; i < cd.getItemCount(); i++) {
				uris.add(cd.getItemAt(i).getUri());
			}
		}
	}
	return uris;
}
 
static Bundle getResultsFromIntent(Intent intent) {
    ClipData clipData = intent.getClipData();
    if (clipData == null) {
        return null;
    }
    ClipDescription clipDescription = clipData.getDescription();
    if (!clipDescription.hasMimeType(ClipDescription.MIMETYPE_TEXT_INTENT)) {
        return null;
    }
    if (clipDescription.getLabel().equals(RESULTS_CLIP_LABEL)) {
        return clipData.getItemAt(0).getIntent().getExtras().getParcelable(EXTRA_RESULTS_DATA);
    }
    return null;
}
 
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    firstTime = false;
    JSONArray jsonArray = new JSONArray();

    // Retrieve file, folders paths
    if (requestCode == FILE_CODE && resultCode == Activity.RESULT_OK) {
        if (data.getBooleanExtra(FilePickerActivity.EXTRA_ALLOW_MULTIPLE, false)) {
            // For JellyBean and above
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                ClipData clip = data.getClipData();

                if (clip != null) {
                    for (int i = 0; i < clip.getItemCount(); i++) {
                        jsonArray.put(clip.getItemAt(i).getUri().toString());
                    }
                }
            // For Ice Cream Sandwich
            } else {
                ArrayList<String> paths = data.getStringArrayListExtra
                            (FilePickerActivity.EXTRA_PATHS);

                if (paths != null) {
                    for (String path: paths) {
                        jsonArray.put(Uri.parse(path).toString());
                    }
                }
            }

        } else {
            jsonArray.put(data.getData().toString());
        }
    }

    // Send information
    Intent intent = new Intent();
    intent.putExtra("information", jsonArray.toString());
    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    setResult(Activity.RESULT_OK, intent);
    finish();
}
 
源代码16 项目: quickimagepick   文件: QiPick.java
/**
 * Use this in {@code onActivityResult(...)} of Activity or Fragment to retrieve image {@link Uri}
 * <br>
 * Note: for Fragments it's advised to use Fragment-specific overloads of this method
 *
 * @param pContext     app {@link Context}
 * @param pRequestCode request code from {@code onActivityResult(...)} parameter
 * @param pResultCode  result code from {@code onActivityResult(...)} parameter
 * @param pData        Intent from {@code onActivityResult(...)} parameter
 * @param pCallback    result callback
 * @return true if result was accepted by QuickImagePick
 * @see #handleActivityResult(Fragment, int, int, Intent, PickCallback)
 * @see #handleActivityResult(android.app.Fragment, int, int, Intent, PickCallback)
 */
@SuppressLint("NewApi")
public static boolean handleActivityResult(@NonNull final Context pContext, final int pRequestCode, final int pResultCode,
                                           @Nullable final Intent pData, @NonNull final PickCallback pCallback) {

    if (pRequestCode != REQ_CAMERA && pRequestCode != REQ_GALLERY && pRequestCode != REQ_DOCUMENTS && pRequestCode != REQ_MULTIPLE) {
        return false;
    }

    final int requestType = PreferenceManager.getDefaultSharedPreferences(pContext)
                                             .getInt(PREFS_REQUEST_TYPE, 0);

    if (pResultCode == Activity.RESULT_OK) {

        if (pRequestCode == REQ_DOCUMENTS) {
            handleResultFromDocuments(requestType, pCallback, pData);
        } else if (pRequestCode == REQ_GALLERY) {
            handleResultFromGallery(requestType, pCallback, pData);
        } else if (pRequestCode == REQ_CAMERA) {
            handleResultFromCamera(pContext, requestType, pCallback, pData);
        } else if (pData == null || pData.getData() == null && API_18 && pData.getClipData() == null) {
            handleResultFromCamera(pContext, requestType, pCallback, pData);
        } else {
            handleResultFromDocuments(requestType, pCallback, pData);
        }

        final String lastCameraUriString = PreferenceManager.getDefaultSharedPreferences(pContext)
                                                            .getString(PREFS_LAST_CAMERA_URI, null);

        final Uri lastCameraUri = TextUtils.isEmpty(lastCameraUriString) ? null : Uri.parse(lastCameraUriString);

        if (lastCameraUri != null) {
            pContext.getApplicationContext()
                    .revokeUriPermission(lastCameraUri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        }

    } else {

        if (pRequestCode == REQ_DOCUMENTS) {
            pCallback.onCancel(PickSource.DOCUMENTS, requestType);
        } else if (pRequestCode == REQ_GALLERY) {
            pCallback.onCancel(PickSource.GALLERY, requestType);
        } else if (pRequestCode == REQ_CAMERA) {

            pCallback.onCancel(PickSource.CAMERA, requestType);

            deleteLastCameraPic(pContext);

        } else {

            if (pData == null || pData.getData() == null && API_18 && pData.getClipData() == null) {

                pCallback.onCancel(PickSource.CAMERA, requestType);

                deleteLastCameraPic(pContext);

            } else {
                pCallback.onCancel(PickSource.DOCUMENTS, requestType);
            }

        }

    }

    return true;
}
 
源代码17 项目: Android-AdvancedWebView   文件: AdvancedWebView.java
public void onActivityResult(final int requestCode, final int resultCode, final Intent intent) {
	if (requestCode == mRequestCodeFilePicker) {
		if (resultCode == Activity.RESULT_OK) {
			if (intent != null) {
				if (mFileUploadCallbackFirst != null) {
					mFileUploadCallbackFirst.onReceiveValue(intent.getData());
					mFileUploadCallbackFirst = null;
				}
				else if (mFileUploadCallbackSecond != null) {
					Uri[] dataUris = null;

					try {
						if (intent.getDataString() != null) {
							dataUris = new Uri[] { Uri.parse(intent.getDataString()) };
						}
						else {
							if (Build.VERSION.SDK_INT >= 16) {
								if (intent.getClipData() != null) {
									final int numSelectedFiles = intent.getClipData().getItemCount();

									dataUris = new Uri[numSelectedFiles];

									for (int i = 0; i < numSelectedFiles; i++) {
										dataUris[i] = intent.getClipData().getItemAt(i).getUri();
									}
								}
							}
						}
					}
					catch (Exception ignored) { }

					mFileUploadCallbackSecond.onReceiveValue(dataUris);
					mFileUploadCallbackSecond = null;
				}
			}
		}
		else {
			if (mFileUploadCallbackFirst != null) {
				mFileUploadCallbackFirst.onReceiveValue(null);
				mFileUploadCallbackFirst = null;
			}
			else if (mFileUploadCallbackSecond != null) {
				mFileUploadCallbackSecond.onReceiveValue(null);
				mFileUploadCallbackSecond = null;
			}
		}
	}
}
 
源代码18 项目: AndroidCommons   文件: PickImageHandler.java
/**
 * Call this method from {@link Activity#onActivityResult(int, int, Intent)} method to
 * get picked contact info.
 */
@Nullable
public static List<Uri> onResult(@NonNull Context context, int resultCode,
        @Nullable Intent data) {
    if (resultCode != Activity.RESULT_OK || data == null) {
        return null;
    }

    ClipData clip = null;

    if (Build.VERSION.SDK_INT >= 18) {
        clip = data.getClipData();
    }

    final List<Uri> uris;

    if (clip != null) {
        uris = new ArrayList<>();
        for (int i = 0, size = clip.getItemCount(); i < size; i++) {
            uris.add(clip.getItemAt(i).getUri());
        }
    } else if (data.getData() != null) {
        uris = Collections.singletonList(data.getData());
    } else {
        uris = Collections.emptyList();
    }

    // Trying to get persistable read permissions
    if (Build.VERSION.SDK_INT >= 19) {
        final int readFlag = Intent.FLAG_GRANT_READ_URI_PERMISSION;
        if ((data.getFlags() & readFlag) == readFlag) {
            for (Uri uri : uris) {
                try {
                    context.getContentResolver().takePersistableUriPermission(uri, readFlag);
                } catch (Exception ignored) {
                    // Persistable permission was not granted, ignoring
                }
            }
        }
    }

    return uris;
}
 
源代码19 项目: Os-FileUp   文件: MainActivity.java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
    super.onActivityResult(requestCode, resultCode, intent);
    if(Build.VERSION.SDK_INT >= 21){
        Uri[] results = null;

        /*-- if file request cancelled; exited camera. we need to send null value to make future attempts workable --*/
        if (resultCode == Activity.RESULT_CANCELED) {
            if (requestCode == file_req_code) {
                file_path.onReceiveValue(null);
                return;
            }
        }

        /*-- continue if response is positive --*/
        if(resultCode== Activity.RESULT_OK){
            if(requestCode == file_req_code){
                if(null == file_path){
                    return;
                }

                ClipData clipData;
                String stringData;
                try {
                    clipData = intent.getClipData();
                    stringData = intent.getDataString();
                }catch (Exception e){
                    clipData = null;
                    stringData = null;
                }

                if (clipData == null && stringData == null && cam_file_data != null) {
                    results = new Uri[]{Uri.parse(cam_file_data)};
                }else{
                    if (clipData != null) { // checking if multiple files selected or not
                        final int numSelectedFiles = clipData.getItemCount();
                        results = new Uri[numSelectedFiles];
                        for (int i = 0; i < clipData.getItemCount(); i++) {
                            results[i] = clipData.getItemAt(i).getUri();
                        }
                    } else {
                        results = new Uri[]{Uri.parse(stringData)};
                    }
                }
            }
        }
        file_path.onReceiveValue(results);
        file_path = null;
    }else{
        if(requestCode == file_req_code){
            if(null == file_data) return;
            Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData();
            file_data.onReceiveValue(result);
            file_data = null;
        }
    }
}
 
public void onActivityResult(final int requestCode, final int resultCode, final Intent intent) {
    if (requestCode == mRequestCodeFilePicker) {
        if (resultCode == Activity.RESULT_OK) {
            if (intent != null) {
                if (mFileUploadCallbackFirst != null) {
                    mFileUploadCallbackFirst.onReceiveValue(intent.getData());
                    mFileUploadCallbackFirst = null;
                } else if (mFileUploadCallbackSecond != null) {
                    Uri[] dataUris = null;

                    try {
                        if (intent.getDataString() != null) {
                            dataUris = new Uri[]{Uri.parse(intent.getDataString())};
                        } else {
                            if (Build.VERSION.SDK_INT >= 16) {
                                if (intent.getClipData() != null) {
                                    final int numSelectedFiles = intent.getClipData().getItemCount();

                                    dataUris = new Uri[numSelectedFiles];

                                    for (int i = 0; i < numSelectedFiles; i++) {
                                        dataUris[i] = intent.getClipData().getItemAt(i).getUri();
                                    }
                                }
                            }
                        }
                    } catch (Exception ignored) {
                    }

                    mFileUploadCallbackSecond.onReceiveValue(dataUris);
                    mFileUploadCallbackSecond = null;
                }
            }
        } else {
            if (mFileUploadCallbackFirst != null) {
                mFileUploadCallbackFirst.onReceiveValue(null);
                mFileUploadCallbackFirst = null;
            } else if (mFileUploadCallbackSecond != null) {
                mFileUploadCallbackSecond.onReceiveValue(null);
                mFileUploadCallbackSecond = null;
            }
        }
    }
}
 
 方法所在类
 同类方法