For me, I captured and then shared the screen by firstly, getting a root view from the current activity:-
View rootView = getWindow().getDecorView().findViewById(android.R.id.content);
public static Bitmap getScreenShot(View view) { 
  View screenView = view.getRootView(); 
  screenView.setDrawingCacheEnabled(true); 
Bitmap bitmap = Bitmap.createBitmap(screenView.getDrawingCache());           screenView.setDrawingCacheEnabled(false); 
return bitmap;
}
After which, I stored the Bitmap into the SD card:- 
public static void store(Bitmap bm, String fileName){ 
      final static String dirPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Screenshots"; 
      File dir = new File(dirPath); 
      if(!dir.exists()) 
      dir.mkdirs(); 
File file = new File(dirPath, fileName); 
try { 
      FileOutputStream fOut = new FileOutputStream(file);   bm.compress(Bitmap.CompressFormat.PNG, 85, fOut); 
fOut.flush(); 
fOut.close(); 
} catch (Exception e) { 
e.printStackTrace(); 
}
}
Finally, in order to share the screenshot of the Current Activity, I used the following lines of code:-
private void shareImage(File file){ 
   Uri uri = Uri.fromFile(file);
      Intent intent = new Intent(); 
    intent.setAction(Intent.ACTION_SEND); 
    intent.setType("image/*"); 
intent.putExtra(android.content.Intent.EXTRA_SUBJECT, "");      intent.putExtra(android.content.Intent.EXTRA_TEXT, ""); 
intent.putExtra(Intent.EXTRA_STREAM, uri); 
try { 
    startActivity(Intent.createChooser(intent, "Share Screenshot")); 
} catch (ActivityNotFoundException e) {
Toast.makeText(context, "No App Available", Toast.LENGTH_SHORT).show(); 
    }
}
After which, do Add permissions below into your given AndroidManifest.xml:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
This helps as it creates the files in the external storage and also allows and accesses the files.