如何设置最大文件选择计数意图"Intent.EXTRA_ALLOW_MULTIPLE".用户可以选择达到某个限制?

Ram*_*dam 8 android android-intent

我使用以下Intent类型并使用"Intent.EXTRA_ALLOW_MULTIPLE"来选择多个文件选择,但我想将最大文件选择计数设置为Intent,而不使用android应用程序中的自定义类.

Intent intent = new Intent();
                        intent.setType("*/*");
                        intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, true);
                        intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
                        String[] extraMimeTypes = {"image/*", "video/*", "application/pdf", "audio/*",
                                "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
                                "application/vnd.ms-powerpoint", "application/vnd.openxmlformats-officedocument.presentationml.presentation",
                                "application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",};
                        intent.putExtra(Intent.EXTRA_MIME_TYPES, extraMimeTypes);
                        intent.setAction(Intent.ACTION_OPEN_DOCUMENT);

                        startActivityForResult(intent, 201);
Run Code Online (Sandbox Code Playgroud)

我想在android Intent中发送文件选择计数.

小智 0

我能想到的唯一方法是使用ClipData检查OnActivityResult()方法中Intent 数据参数内接收的文件数量,并在超出限制时调用 Intent。

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode==RESULT_OK&&requestCode==201&&data!=null){
            ClipData clip=data.getClipData();
            if(clip==null){//data.getClipData() returns null if there is ONE item received 
            Toast.makeText(this,"You have selected only one item!",Toast.LENGTH_LONG).show();
                //To receive and manage a single data because clip gets null in this case
                ClipData.Item item = new ClipData.Item(data.getData());
                ClipDescription description=new ClipDescription("clip",new String[1]);
                clip=new ClipData(description,item);
            //You have your single data in clip
            }else{
            if(clip.getItemCount()>YOUR_LIMIT){
            Toast.makeText(this,"You have selected greater items than the maximum limit! Reselect your files again!",Toast.LENGTH_LONG).show();
                        Intent intent = new Intent();
                        intent.setType("*/*");
                        intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, true);
                        intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
                        String[] extraMimeTypes = {"image/*", "video/*", "application/pdf", "audio/*",
                                "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
                                "application/vnd.ms-powerpoint", "application/vnd.openxmlformats-officedocument.presentationml.presentation",
                                "application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",};
                        intent.putExtra(Intent.EXTRA_MIME_TYPES, extraMimeTypes);
                        intent.setAction(Intent.ACTION_OPEN_DOCUMENT);

                        startActivityForResult(intent, 201);
                    }else{
                        //Manage Data Received in ClipData clip
                     }
                  }
              }
          }
Run Code Online (Sandbox Code Playgroud)