Запись и чтение файла с SD-карты в Android - PullRequest
4 голосов
/ 02 января 2012

Я создаю приложение для Android, которое будет записывать текстовый файл на SD-карту из текстового обзора после нажатия кнопки и получения SMS-сообщения с тем же текстом.

Как сохранить текстовый файл на SD-карту и прочитать его после получения SMS? Вот код, который я получил до сих пор:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.telephony.gsm.SmsMessage;
import android.widget.Toast;
import android.media.MediaPlayer;

public class IncomingSmsCaptureApp extends BroadcastReceiver {
MediaPlayer mp1;
@Override
public void onReceive(Context context, Intent intent) {
File sdcard = Environment.getExternalStorageDirectory();

//Get the text file
File file = new File(sdcard,"Notes\file.txt");

//Read text from file
String text = new String();

try {
  BufferedReader br = new BufferedReader(new FileReader(file));
  String line;

  while ((line = br.readLine()) != null) {
  }
}
catch (IOException e) {
  //You'll need to add proper error handling here
}
//---get the SMS message passed in---
Bundle bundle = intent.getExtras();       
SmsMessage[] msgs = null;
String str = "";     
String Message = "";
if (bundle != null)
{
//---retrieve the SMS message received---
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];           
for (int i=0; i<msgs.length; i++){
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);               
str += "SMS from " + msgs[i].getOriginatingAddress();                    
str += " :";
str += msgs[i].getMessageBody().toString();
str += "\n";       
Message = msgs[i].getMessageBody().toString();
}
//---display the new SMS message---
Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
if (Message.equals("alarm")) {
//Play alarm sound
mp1 = MediaPlayer.create(context, R.raw.alarm);
mp1.start();
}
else {
if (Message.equals(text)) {
    //Perform action
}
}
}       
}
}

Ответы [ 2 ]

7 голосов
/ 02 января 2012

Следующий код поможет вам записать текст в файл и сохранить его в корневом каталоге

Сначала получите текст из вашего текстового представления

String text = myTextView.getText().toString();

Затем напишите следующие операторы для записи втекстовый файл

File logFile = new File(Environment.getExternalStorageDirectory().toString(), "myFile.txt");
if(!logFile.exists()) {
     logFile.createNewFile();
}

BufferedWriter output = new BufferedWriter(new FileWriter(logFile));
output.write(text);
output.close();

И ваш файл будет храниться в корневом каталоге

Не забудьте добавить разрешение WRITE_EXTERNAL_STORAGE в манифест

1 голос
/ 02 января 2012

Вот базовый код, который записывает текст из TextView в файл на вашей SD-карте.

File myFile = new File(Environment.getExternalStorageDirectory().toString(), "myFile.txt");
myFile.createNewFile();
FileOutputStream fOut = new FileOutputStream(myFile);
OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
myOutWriter.append(txtData.getText());
myOutWriter.close();
fOut.close();

Надеюсь, это поможет!

...