TransactionTooLargeException при выборе множества файлов с помощью намерения ACTION_GET_CONTENT - PullRequest
0 голосов
/ 15 апреля 2020

Если вы откроете FileChooser с помощью Intent.ACTION_GET_CONTENT и выберете огромное количество файлов, например, 2500, будет выброшено TransactionTooLargeException, а затем процесс будет завершен без возобновления в onActivityResult:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.addCategory(CATEGORY_OPENABLE);
        intent.setType("*/*");
        intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
        intent = Intent.createChooser(intent, "Foo");
        startActivityForResult(intent, 121);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // logic stuff
    }
}

Как можно позволить пользователю решать, сколько файлов выбрать, не разрушая приложение?

1 Ответ

1 голос
/ 15 апреля 2020

У вас нет средства для ограничения количества выборов, которые делает пользователь, кроме пропуска EXTRA_ALLOW_MULTIPLE.

Это до реализации ACTION_GET_CONTENT (Android, производитель устройства). или разработчик приложения), чтобы ограничить количество выборов некоторым числом, которое вряд ли вызовет проблемы. Видимо, на вашем устройстве и для этого сценария реализация ACTION_GET_CONTENT имеет ошибку. Если вы точно знаете, чья это информация, рассмотрите возможность сообщения об ошибке.

...