Android общий выбор намерений - фильтрация приложений на основе допустимого размера файла - PullRequest
1 голос
/ 29 мая 2020

В моем приложении я использую следующий код для обмена несколькими видеофайлами в приложении по выбору пользователей. Это работает нормально, но я хотел бы динамически ограничить выбор приложений, которые могут обрабатывать размер файла. Например, 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...