Android-Intent wählen Sie " CSV für den import
Möchte ich importieren einer bestimmten CSV-Datei in die Datenbank. Ich bin mit der Bibliothek aFileChooser wählen Sie die Datei, aber die Daten in der CSV-Datei werden nicht importiert. Wo bin ich falsch? Dank
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode) {
case ACTIVITY_CHOOSE_FILE1: {
if (resultCode == RESULT_OK){
Uri uri = data.getData();
File file1 = com.ipaulpro.afilechooser.utils.FileUtils.getFile(uri);
proImportCSV(file1);
}
}
}
}
ricevi_csv= (Button) findViewById(R.id.but_ricevi_csv);
ricevi_csv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent chooseFile;
Intent intent;
chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
chooseFile.setType("application/image");
intent = Intent.createChooser(chooseFile, "Choose a CSV");
startActivityForResult(intent, ACTIVITY_CHOOSE_FILE1);
}
});
}
private void proImportCSV(File from){
File root = Environment.getExternalStorageDirectory();
File exportDir = new File(root.getAbsolutePath());
File csvFile = new File(exportDir, getString(R.string.app_name)+".csv");
try {
ContentValues cv = new ContentValues();
//reading CSV and writing table
CSVReader dataRead = new CSVReader(new FileReader(csvFile));
String[] vv = null;
while((vv = dataRead.readNext())!=null) {
cv.clear();
SimpleDateFormat currFormater = new SimpleDateFormat("dd-MM-yyyy");
SimpleDateFormat postFormater = new SimpleDateFormat("yyyy-MM-dd");
String eDDte;
try {
Date nDate = currFormater.parse(vv[0]);
eDDte = postFormater.format(nDate);
cv.put(Table.DATA,eDDte);
}
catch (Exception e) {
}
cv.put(Table.C,vv[1]);
cv.put(Table.E,vv[2]);
cv.put(Table.U,vv[3]);
cv.put(Table.C,vv[4]);
SQLiteDatabase db = mHelper.getWritableDatabase();
db.insert(Table.TABLE_NAME,null,cv);
}
dataRead.close();
} catch (Exception e) {
Log.e("TAG",e.toString());
}
- Sind Sie immer irgendwelche Ausnahmen? Die einzige seltsame Sache, die ich sehen kann, ist Sie immer "application/Bild" anstelle von "text/csv" und Vorsatz.ACTION_GET_CONTENT statt Vorsatz.CATEGORY_OPENABLE. Sie können sogar möchten, verwenden Sie "neue Datei(Daten.getData().getPath())" statt "com".ipaulpro.afilechooser.utils.FileUtils.getFile(uri);" -- habe ich nur dieses CSV-wichtige Sachen gestern und das schien richtig zu arbeiten für mich. Ihre Lesung Zeug sieht ok aus, auch wenn Sie vielleicht anrufen möchten dataRead.readNext() vor der Eingabe Ihrer while-Schleife stellen Sie sicher, dass Sie überspringen Sie die header-Zeile (wenn Sie eine haben)
- Können Sie mir zeigen, Ihren code?
Intent.CATEGORY_OPENABLE
nicht für mich arbeiten - Sicher, ich poste es als Antwort. Gib mir nur eine Sekunde, um es ziehen von github
- Und ich war Irre zu entfernen ACTION_GET_CONTENT btw
Du musst angemeldet sein, um einen Kommentar abzugeben.
Öffnen Sie den Vorsatz mit dem Typ "text/csv" und eine Kategorie von CATEGORY_OPENABLE:
Nun in Ihrem onActivityResult:
Wir und jetzt brauchen, um Ihre proImportCSV Methode, um die tatsächliche Datei, die wir vorbei sind zurück: