java – How to get the path of the SD card in Android?

First I want to clarify why I am asking this question, I know that I have already asked myself a lot of questions about this problem in this community, I have already consulted many previous doubts and none of them helped me .
I recently introduced myself into Android, I got about "Write and read" in the internal and external memory, but I had problems trying to write or read in external memory. These problems have caused me confusion at the same time. Then I write my problems:

(API that I use: 23)
– I guided myself in the official documentation of Android External Storage
We mention here two very useful methods in the description, which contribute to "getExternalStorageDirectory ()" and "getExternalStoragePublicDirectory (type)". To try these methods, I tried to create a simple application, which is to create a test directory in the public directory "Pictures", here is the code that I use in my to perform this action:

                Public class MainActivity extends AppCompatActivity {
TextView output;
Protected void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
output = (TextView) findViewById (;
File Directory = New File (Environment.getExternalStoragePublicDirectory
(Environment.DIRECTORY_PICTURES) .getPath () + "/ Test");
if (directory.mkdirs ()) {
output.setText ("Done!");

As you can see in the code is not complex what I try, my problems and at the same time my doubts are:
My application writes the requested directory to the phone's internal memory, that is, it uses the following path "/ storage / emulated / 0 / Pictures" obtained by the "getExternalStoragePublicDirectory" method of the "Environment" class, making it impossible to write to sd memory. . The above reflects my problem by not allowing me to write in the memory of sd, my doubts arise when I investigate the reasons for the return of this route (to clarify, I had the notion so far if I investigated the change that the apis had in this subject). Some sources indicate that the reason is that the route indicated by "emulated" is an instantiated directory for both types of storage, namely internal and external.
How is this true?
If this is true, will I still have access to the internal memory?
In case these methods always lead me to the internal memory, how can I access the external memory (sdcard)?

I had some progress indications when using "ContextCompat" using the method:

ContextCompat.getExternalFilesDirs (this, null);

This has returned a "File" arrangement that describes all the directories my application can access. Among them, I noticed that I was being led to "/storage/5690-0394/Android/data/com.isaac.Proof / files" said directory refers to SD memory more accurately by the parent roads "/ storage / 5690-0394 /".

This has really caused a lot of confusion, now I do not understand what is really "/ storage / emulated" and if the methods provided by the Environment class are really useful.