Not able to upload file in android EACCES (Permission denied)

Viewed 30

I am trying to upload file (which could be any file .pdf,.doc,.jpeg,.png etc) from Android app (from multiple location eg - documents, downloads etc) to server using Retrofit (Java). I have created intent to open file chooser:

private void createIntentToPickFile() {
    Intent selectFileIntent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
    selectFileIntent.setType("*/*");
    selectFileIntent.addCategory(Intent.CATEGORY_OPENABLE);
    launchSelectFileActivity.launch(selectFileIntent);
}

this is the ActivityResult method:

ActivityResultLauncher<Intent> launchSelectFileActivity = registerForActivityResult(
        new ActivityResultContracts.StartActivityForResult(),
        result -> {
            if (result.getResultCode() == Activity.RESULT_OK) {
                Intent data = result.getData();
                Uri selectedImageUri = data.getData();
                Cursor returnCursor =
                        getContentResolver().query(selectedImageUri, null, null, null, null);
                int nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
                returnCursor.moveToFirst();
                Log.e("File Name is :: ", returnCursor.getString(nameIndex));
                String fileName = returnCursor.getString(nameIndex);
                returnCursor.close();

                // MEDIA GALLERY
                String selectedImagePath = Util.getPathFromURI(getApplicationContext(), selectedImageUri);
                File videoFile = new File(selectedImagePath);
                uploadFile(videoFile, fileName, category);
            }
        });

and here I am preparing my multipart request to upload file to server:

RequestBody requestBody = RequestBody.create(MediaType.parse("*/*"), filePath);
RequestBody uploadedBy = RequestBody.create(MediaType.parse("text/plain"),
        SharedPreference.getData(getApplicationContext(), Constant.USERID));
RequestBody auditId = RequestBody.create(MediaType.parse("text/plain"),
        String.valueOf(customerInfo.getAuditId()));
RequestBody categoryType = RequestBody.create(MediaType.parse("text/plain"), category);
MultipartBody.Part part = MultipartBody.Part.createFormData("file", fileName, requestBody);
APIInterface apiInterface = APIClient.getClient().create(APIInterface.class);
Call<Void> call = apiInterface.uploadAuditFiles(part, uploadedBy, auditId, categoryType);

I am able to get all the file details but when I try to upload file it gives me this error

java.io.FileNotFoundException: /storage/emulated/0/Download/2952515496054.pdf: open failed: EACCES (Permission denied)

I know I have read about scoped storage in Android 10, but could find any solution related to file upload.

Can anyone guide how to solve this permission issue.

0 Answers
Related