Reputation: 159
This is my code when i run this it does not store or generate any file in my sd card. I dont know where i'm doing mistake sorry for mistake as im begginer in programming
List<ClientModel> list = new ArrayList<ClientModel>(); //My Model
DatabaseHelper db = new DatabaseHelper(getApplicationContext()); //My DBHelper Class
list = db.getAllClientList(); //My Method to get all data from database
File exportDir = new File(Environment.getExternalStorageDirectory(), ""); //
if (!exportDir.exists())
{
exportDir.mkdirs();
}
File file = new File(exportDir, "Abc.csv"); //File Name
//writing data to a txt file
try {
file.createNewFile();
CSVWriter csvWrite = new CSVWriter(new FileWriter(file)); //Writing data in csv file
for (int index = 0; index < list.size();) {
String arrStr[] = { String.valueOf(list.get(0))};
csvWrite.writeNext(arrStr);
}
csvWrite.close();
//But Above Code is not working for me
} catch (IOException e) {
e.printStackTrace();
}
Upvotes: 0
Views: 1503
Reputation: 23881
you need to check runtime permission
for Api 23:
try this:
if(isStoragePermissionGranted()){
Save_file();
}
Now add this methods in your activity:
public void Save_file(){
File exportDir = new File(Environment.getExternalStorageDirectory(), ""); //
if (!exportDir.exists())
{
exportDir.mkdirs();
}
File file = new File(exportDir, "Abc.csv"); //File Name
//writing data to a txt file
try {
file.createNewFile();
CSVWriter csvWrite = new CSVWriter(new FileWriter(file)); //Writing data in csv file
for (int index = 0; index < list.size();) {
String arrStr[] = { String.valueOf(list.get(0))};
csvWrite.writeNext(arrStr);
}
csvWrite.close();
//But Above Code is not working for me
} catch (IOException e) {
e.printStackTrace();
}
}
}
public boolean isStoragePermissionGranted() {
if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
Log.v(TAG,"Permission is granted");
return true;
} else {
Log.v(TAG,"Permission is revoked");
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
return false;
}
}
else { //permission is automatically granted on sdk<23 upon installation
Log.v(TAG,"Permission is granted");
return true;
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(grantResults[0]== PackageManager.PERMISSION_GRANTED){
Log.v(TAG,"Permission: "+permissions[0]+ "was "+grantResults[0]);
//resume tasks needing this permission
Save_file();
}
}
Upvotes: 1