ravi-brightree commented on issue #816:
URL: 
https://github.com/apache/cordova-android/issues/816#issuecomment-1875192029

   
   
   
   > what I did (which is still in progress since im learning android Java for 
this) is to modify the onShowFileChooser() method of 
"platforms\android\CordovaLib\src\org\apache\cordova\engine\SystemWebChromeClient.java"
   > 
   > add import: import android.provider.MediaStore;
   > 
   > and changed the method to below:
   > 
   > ```
   >  public boolean onShowFileChooser(WebView webView, final 
ValueCallback<Uri[]> filePathsCallback, final WebChromeClient.FileChooserParams 
fileChooserParams) {
   >         // Check if multiple-select is specified
   >         LOG.d(LOG_TAG, "file chooser opened");
   >         Boolean selectMultiple = false;
   >         if (fileChooserParams.getMode() == 
WebChromeClient.FileChooserParams.MODE_OPEN_MULTIPLE) {
   >             selectMultiple = true;
   >         }
   >         String[] acceptTypes = fileChooserParams.getAcceptTypes(); 
   >         LOG.d(LOG_TAG,"File types: "+ toCSV(acceptTypes));
   >         Intent intent =  fileChooserParams.createIntent();
   >         intent.addCategory(Intent.CATEGORY_OPENABLE); 
   >         intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, selectMultiple);
   >         
   >         // Uses Intent.EXTRA_MIME_TYPES to pass multiple mime types.
   >         if (acceptTypes.length > 1) {
   >             intent.setType("*/*"); // Accept all, filter mime types by 
Intent.EXTRA_MIME_TYPES.
   >             intent.putExtra(Intent.EXTRA_MIME_TYPES, acceptTypes);
   >         }
   >         
   >         Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
   > 
   >         Intent GalleryIntent = new 
Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
   > 
   >         try {
   >             Intent chooserIntent;
   > 
   >                 chooserIntent = Intent.createChooser(intent, "Open file");
   >                 chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new 
Intent[]{GalleryIntent,cameraIntent, intent});
   >    
   >             parentEngine.cordova.startActivityForResult(new 
CordovaPlugin() {
   >                 @Override
   >                 public void onActivityResult(int requestCode, int 
resultCode, Intent intent) {
   >                     Uri[] result = null;
   >                     if (resultCode ==  Activity.RESULT_OK && intent != 
null) {
   >                         if (intent.getClipData() != null) {
   >                             // handle multiple-selected files
   >                             final int numSelectedFiles = 
intent.getClipData().getItemCount();
   >                             result = new Uri[numSelectedFiles];
   >                             for (int i = 0; i < numSelectedFiles; i++) {
   >                                 result[i] = 
intent.getClipData().getItemAt(i).getUri();
   >                                 LOG.d(LOG_TAG, "Receive file chooser URL: 
" + result[i]);
   >                             }
   >                         }
   >                         else if (intent.getData() != null) {
   >                             // handle single-selected file
   >                             result = 
WebChromeClient.FileChooserParams.parseResult(resultCode, intent);
   >                             LOG.d(LOG_TAG, "Receive file chooser URL: " + 
result);
   >                         }
   >                     }
   >                     filePathsCallback.onReceiveValue(result);
   >                 }
   >             }, chooserIntent, FILECHOOSER_RESULTCODE);
   >         } catch (ActivityNotFoundException e) {
   >             LOG.w("No activity found to handle file chooser intent.", e);
   >             filePathsCallback.onReceiveValue(null);
   >         }
   >         return true;
   >     }
   > ```
   > 
   > I still need to figure out how to unbundle the gallery options but atleast 
it works for now
   
   Hello i add same code and open camera but after capture photo not working 
not getting any result


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org
For additional commands, e-mail: issues-h...@cordova.apache.org

Reply via email to