133133import android .widget .ArrayAdapter ;
134134import net .gnu .common .*;
135135import android .support .v4 .content .FileProvider ;
136+ import android .content .*;
136137
137138
138139public class ExplorerActivity extends StorageCheckActivity implements OnRequestPermissionsResultCallback ,
@@ -531,7 +532,9 @@ public void onCreate(final Bundle savedInstanceState) {
531532 suffix = intent .getStringExtra (Constants .EXTRA_FILTER_FILETYPE );
532533 suffix = (suffix == null ) ? "" : suffix .trim ();
533534
534- multiFiles = intent .getBooleanExtra (Constants .EXTRA_MULTI_SELECT , true );
535+ multiFiles = intent .getBooleanExtra (Constants .EXTRA_MULTI_SELECT , true )
536+ && intent .getBooleanExtra (Intent .EXTRA_ALLOW_MULTIPLE , true )
537+ && intent .getBooleanExtra ("android.intent.action.MULTIPLE_PICK" , true );
535538
536539 mimes = intent .getStringExtra (Constants .EXTRA_FILTER_MIMETYPE );
537540 //mimes = (mimes == null) ? "" : mimes;
@@ -546,13 +549,13 @@ public void onCreate(final Bundle savedInstanceState) {
546549 if (suffix .length () == 0 ) {
547550 suffix = ".*" ;
548551 }
549- } else if (Intent .ACTION_GET_CONTENT .equals (action )) {
552+ } else if (Intent .ACTION_GET_CONTENT .equals (action ) && ! intent . getBooleanExtra ( Intent . EXTRA_ALLOW_MULTIPLE , true ) ) {
550553 multiFiles = false ;
551554 if (suffix .length () == 0 ) {
552555 suffix = ".*" ;
553556 }
554557 } else {
555- suffix = "*" ;
558+ suffix = ". *" ;
556559 }
557560 previousSelectedStr = intent .getStringArrayExtra (Constants .PREVIOUS_SELECTED_FILES );
558561 Log .d (TAG , "previousSelectedStr " + Util .arrayToString (previousSelectedStr , true , "\n " ));
@@ -2891,9 +2894,22 @@ public void ok(View view) {
28912894 }
28922895 intent .putStringArrayListExtra (Constants .PREVIOUS_SELECTED_FILES , fileArr );
28932896 intent .putExtra (Constants .EXTRA_MULTI_SELECT , multiFiles );
2894- intent .addFlags (Intent .FLAG_GRANT_READ_URI_PERMISSION );
2897+ final int size = fileArr .size ();
2898+ if (size == 1 ) {
2899+ intent .setData (FileProvider .getUriForFile (this , "net.gnu.explorer.fileprovider" , new File (fileArr .get (0 ))));
2900+ } else if (size > 1 ) {
2901+ final ClipData clipData = ClipData .newRawUri (
2902+ "" , FileProvider .getUriForFile (this , "net.gnu.explorer.fileprovider" , new File (fileArr .get (0 ))));
2903+ for (int i = 1 ; i < size ; i ++) {
2904+ clipData .addItem (new ClipData .Item (FileProvider .getUriForFile (this , "net.gnu.explorer.fileprovider" , new File (fileArr .get (i )))));
2905+ }
2906+ intent .setClipData (clipData );
2907+ }
2908+ intent .addFlags (Intent .FLAG_GRANT_READ_URI_PERMISSION
2909+ | Intent .FLAG_GRANT_WRITE_URI_PERMISSION
2910+ | Intent .FLAG_GRANT_PERSISTABLE_URI_PERMISSION );
28952911 setResult (RESULT_OK , intent );
2896- Log .d (TAG , "ok " + getIntent () + ", " + getIntent () .getExtras ());
2912+ Log .i (TAG , "ok " + intent + ", " + intent .getExtras ());
28972913 this .finish ();
28982914 }
28992915
0 commit comments