Я пишу приложение для Android, которое собирает данные в виде строки значений, разделенных запятыми (каждая строка заканчивается на \ n), а затем отправляет мне данные по электронной почте один раз в месяц.
Один из моих бета-тестеров сообщил мне, что он хотел бы иметь возможность просматривать промежуточные данные между загрузками. Естественный способ сделать это (на мой взгляд) - загрузить данные в приложение, похожее на «Excel» (например, QuickOffice или средство просмотра документа Google). Я попытался записать строку в файл и затем загрузить ее в QuickOffice. Я могу запустить QuickOffice, но файл появляется пустым. Кроме того, когда я ищу файл на моей SD-карте, я не могу найти его.
Мой код:
File root = Environment.getExternalStorageDirectory();
try
{
BufferedWriter out = new BufferedWriter(new FileWriter(root.toString() + "/ww.csv"));
out.write(getPreferences(MODE_PRIVATE).getString("allTrips", ""));
out.flush(); // Probably not necessary
out.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
Intent i1 = new Intent(android.content.Intent.ACTION_VIEW);
Uri data = Uri.fromFile(new File(root.toString() + "/ww.csv"));
i1.setDataAndType(data, "application/vnd.ms-excel");
startActivity(i1);
Пожалуйста, дайте мне знать, что я делаю не так. Я открыт для небольших изменений в моем коде выше, а также для совершенно разных подходов, которые делают работу.
Прежде чем вы спросите, я вспомнил, чтобы добавить
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
к моему манифесту.
Кроме того, я так же рад писать во внутреннюю файловую систему вместо SD-карты (у меня небольшие данные), но я не мог даже открыть QuickOffice.
Пример данных:
09/19/2011,AP2,Home,GW Parkway,12:03 PM,12:41 PM,38,Dry,Day
09/20/2011,Home,AP2,MacArthur Blvd,7:18 AM,8:32 AM,74,Rain,Day
09/20/2011,AP2,Home,Rock Creek Pkwy (Blagden),4:51 PM,5:45 PM,54,Dry,Day
09/21/2011,Home,AP2,Rte 295,6:44 AM,7:36 AM,52,Rain,Day
Спасибо.
ОБНОВЛЕНИЕ (09 октября 2011 г.):
Иногда при написании кода вам нужно сделать шаг назад и переосмыслить то, что вы пытаетесь достичь. Все, что я хочу сделать, это переформатировать свои промежуточные данные и создать удобную для чтения таблицу, чтобы пользователь мог видеть данные между загрузками в месяц. Я думал, что самый простой способ сделать это - загрузить мой файл .csv в электронную таблицу. Предложение Николая об использовании внешней библиотеки, чтобы убедиться, что мой файл был правильно отформатирован, могло бы сработать, но я стараюсь сделать это приложение максимально компактным, поэтому я хочу избегать ненужного использования (и обучения использованию) внешних библиотек. Итак, моим конечным решением было записать файл немного большего размера на SD-карту в формате html, а затем открыть файл как text / html, а не text / plain или application / vnd.ms-excel. Это заняло около часа программирования и хорошо решило проблему, поэтому я собираюсь считать проблему закрытой.