使用 ACTION_GET_CONTENT 意图选择多个文件时出现 TransactionTooLargeException
TransactionTooLargeException when selecting many files using ACTION_GET_CONTENT intent
如果您使用 Intent.ACTION_GET_CONTENT
和 select 打开 FileChooser 大量文件,例如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
}
}
如何让用户决定要 select 多少文件而不破坏应用程序?
除了跳过 EXTRA_ALLOW_MULTIPLE
.
之外,您没有办法限制用户做出的选择的数量
ACTION_GET_CONTENT
实施(Android、设备制造商或应用程序开发人员)将选择的数量限制在不太可能导致问题的某个数量。显然,在您的设备上和这种情况下,ACTION_GET_CONTENT
实现有一个错误。如果您确定它是谁的,请考虑提交错误报告。
如果您使用 Intent.ACTION_GET_CONTENT
和 select 打开 FileChooser 大量文件,例如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
}
}
如何让用户决定要 select 多少文件而不破坏应用程序?
除了跳过 EXTRA_ALLOW_MULTIPLE
.
ACTION_GET_CONTENT
实施(Android、设备制造商或应用程序开发人员)将选择的数量限制在不太可能导致问题的某个数量。显然,在您的设备上和这种情况下,ACTION_GET_CONTENT
实现有一个错误。如果您确定它是谁的,请考虑提交错误报告。