I've tried several methods, however non of them worked for me and the parts of the operations were unclear, so here is what I use for sharing image or video type content in case having the absolute path of the data.
In android manifest.xml add the following lines:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
//Other codes
<provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="com.example.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_paths" />
</provider>
//Other codes
</application>
In the resource directory res, make a new folder called xml. Place a new file into it with the same name you used in the manifest.xml at the meta-data part, in this case provider_paths.xml:
android:resource="@xml/provider_paths"
Place the following in it:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path
        name="external_files"
        path="." />
    <root-path
        name="external_files"
        path="/storage/"/>
</paths>
In the activity you wish to use the share function, place the following code, where path is a string variable containing the absolute path of the content, and "com.example.fileprovider", the author value of Fileprovider is based on one of the line of the fresh xml file created above like this:
android:authorities="com.example.fileprovider"
File file = new File(path);
//Checking if the file exists
if(file.exists()) {
    //Creating the Uri for the file using the provider we just created
    Uri contentUri = 
    FileProvider.getUriForFile(Gallery.this,"com.example.fileprovider", file);
    //Creating the share intent
    Intent S = new Intent(Intent.ACTION_SEND);
    //Allowing different types to be shared
    S.setType("*/*");                                        
    S.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    //Providing the uri to the intent
    S.putExtra(Intent.EXTRA_STREAM, contentUri);
    //Starting the intent, can choose from apps which are listening for the 
    //content type
    startActivity(Intent.createChooser(S, "Share content using"));
}
else{                                  
    Toast.makeText(getApplicationContext(),path + " does not 
    exist",Toast.LENGTH_SHORT).show();
}
With this it is easy to share content from the device with the path of it.
The authorities and resource values are crucial in manifest.xml. One can change them of course, but then make sure to modify them at all occurances.
Resources:
Android Share Intent Image Sharing not working Except WhatsApp
https://www.geeksforgeeks.org/how-to-share-image-from-url-with-intent-in-android/
https://developer.android.com/training/sharing/send