2017-01-22 56 views
0

这是我的代码,当我运行它不存储或生成任何文件在我的SD卡。我不明白我在做节目的错误道歉的错误,因为IM初学者Sqlite数据到Android中的CSV文件

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(); 
     } 
+0

你有没有在manifest中写入权限? –

+0

是的,我已经添加了 Cool

+0

什么错误接收'catch'块? – rafsanahmad007

回答

1

你需要检查运行permission对于API 23:

试试这个:

if(isStoragePermissionGranted()){ 
     Save_file(); 
    } 

现在添加这个方法在你的活动中:

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(); 
    } 
} 
+0

尝试你的代码工作Thx人。我没有每次检查的API 23的权限 – Cool

+0

@Cool如果答案帮助..通过点击勾号 – rafsanahmad007

+0

完成标记为正确... – Cool