This is my try where i could access internal storage files.
https://developer.android.com/training/permissions/requesting.html
From the above link where i got important information about using permission in
api level>23 so there is permission issue as i am unable to access internal storage directories.
Final Code:-
public class MainActivity extends Activity {
ListView lv;
private static final int MY_PERMISSIONS_REQUEST_READ_CONTACTS = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.list);
if (ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,
Manifest.permission.READ_EXTERNAL_STORAGE)) {
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
} else {
ArrayList<String> filesinfolder = GetFiles("/sdcard/");
ArrayAdapter<String> adapter
= new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
filesinfolder);
lv.setAdapter(adapter);
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
ArrayList<String> filesinfolder = GetFiles("/sdcard/");
ArrayAdapter<String> adapter
= new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
filesinfolder);
lv.setAdapter(adapter);
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}
public ArrayList<String> GetFiles(String directorypath) {
ArrayList<String> Myfiles = new ArrayList<String>();
File f = new File(directorypath);
f.mkdirs();
File[] files = f.listFiles();
if (files.length == 0) {
return null;
} else {
for (int i = 0; i < files.length; i++)
Myfiles.add(files[i].getName());
}
return Myfiles;
}
}