В моем приложении я использую следующий код для обмена несколькими видеофайлами в приложении по выбору пользователей. Это работает нормально, но я хотел бы динамически ограничить выбор приложений, которые могут обрабатывать размер файла. Например, gmail ограничивает размер вложений 25 МБ на моем устройстве, а Google Drive - нет.
Возможно ли это сделать?
Если это поможет, вот мой код.
ArrayList<Uri> uris = new ArrayList<>();
for(File f : files.getFiles()){ //files is an array of the files to share
Uri mp4Uri = FileProvider.getUriForFile(context, "com.myfileproviderauthority", f);
uris.add(mp4Uri);
}
sharingIntent.setType("video/mp4");
sharingIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
sharingIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { "toMe@company.com" });
sharingIntent.putExtra(Intent.EXTRA_SUBJECT, "Video");
sharingIntent.putExtra(Intent.EXTRA_TEXT, "Checkout the video!");
sharingIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Intent chooser = Intent.createChooser(sharingIntent, "Share video clip");
List<ResolveInfo> resInfoList =
context.getPackageManager().queryIntentActivities(chooser, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolveInfo : resInfoList) {
String packageName = resolveInfo.activityInfo.packageName;
for(Uri uri : uris){
//TODO: Caution: Calling setFlags() is the only way to securely grant access to your files using temporary access permissions.
// Avoid calling Context.grantUriPermission() method for a file's content URI, since this method grants access that you can only revoke by calling Context.revokeUriPermission().
context.grantUriPermission(packageName, uri,
Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
}
context.startActivity(chooser);