2012-01-02 56 views
4

我正在制作一个android应用程序,一旦按下按钮并收到包含相同文本的SMS消息,就会从textview中向SD卡写入文本文件。Android中的SD卡的写入和文件读取

一旦收到短信,我如何将文本文件保存到SD卡并从该文本文件中读取?这是我到目前为止已经获得了代码:

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 
} 
} 
}  
} 
} 
+0

...你的问题是? – stefan 2012-01-02 14:51:48

+0

为什么人们总是抛出一堆代码,并认为其他人会通读它?我的意思是,为什么你不能只给我们一些不起作用的相关代码呢? – ariefbayu 2012-01-02 15:06:51

+0

我需要知道如何将文本文件从文本框中写入SD卡 – MySoftware 2012-01-02 15:22:15

回答

7

下面的代码将帮助您编写文本文件并将其保存在根目录

首先从你的TextView

获取文本
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允许添加到您的清单

+0

+1 - 四周的好答案。 – 2012-01-02 15:46:03

+0

什么是文件?我得到它下面:文件不能解析为一个变量。在新的文件编写器 – MySoftware 2012-01-02 16:02:38

+0

sory之后,我的错误将“file”替换为“logFile”... – 2012-01-02 16:55:17

1

下面是从一个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(); 

希望这有助于!