从SD卡读取文本文件

时间:2011-09-11 14:53:09

标签: android file sms textview

我有一个应用程序发送短信以检查我的数据包中的剩余MB。我有一个带按钮和文本视图的布局。当我按下按钮时,我会向手机操作员发送信息。然后我有一个广播接收器,它监听传入的消息,并将消息体保存到文本文件中。当我从操作员那里得到答案时,我想在文本视图中显示此文本。

这是我的代码:

public class bonbon3 extends Activity 
{

    Button btnStanje;
    Context context=this;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main3);


        btnStanje = (Button) findViewById(R.id.provjeriStanje);

        btnStanje.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View v) 
            {   
                String phoneNo = "0977";
                String message = "stanje";                 

                sendSMS(phoneNo, message); 

                Toast.makeText(getBaseContext(), "Zahtjev za provjeru stanja paketa je poslan, odgovor očekuj uskoro!", Toast.LENGTH_SHORT).show();

                File root = Environment.getExternalStorageDirectory();
                File dir = new File (root.getAbsolutePath() + "/Bonbon info");
                dir.mkdirs();
                File f = new File(dir, "test.txt");

                StringBuilder text = new StringBuilder();

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

                    while ((line = br.readLine()) != null) {
                        text.append(line);
                        text.append('\n');
                    }
                }
                catch (IOException e) {

                }

               TextView tv = (TextView)findViewById(R.id.textView2);
               tv.setText(text);


                }
        });
    }


    private void sendSMS(String phoneNumber, String message)
    {        
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(phoneNumber, null, message, null, null);        
    }
}

现在,这个代码我试图从文件中读取,在收到回复短信之前,所以我知道这是错误的,但我不知道如何在收到短信回复后将文本加载到textView?

3 个答案:

答案 0 :(得分:1)

我想this link will be very helpful for you

从android中的sdcard读取文本文件与在java中读取文本文件相同。

答案 1 :(得分:0)

我认为您宁愿在您的活动和广播接收者之间建立消息传递(这不是服务吗?)。

你一定会有一个循环,试图不断地读取文件,直到它感觉不对。 不要将SMS存储在文本文件中使用消息传递系统将内容直接从活动发送到服务。

有关活动和服务之间的消息传递,请查看有关绑定服务的Android开发人员指南,尤其是the section about messenger(您的服务不需要绑定)。

答案 2 :(得分:0)

Goran,我不能回复内联,但是如果你关注我的链接,你几乎可以找到所需的一切。

我几乎非常兴奋地跟着这个例子而且效果很好。

您只需要在您的活动中实现消息处理程序(而不是示例中的服务)并从服务中推送消息(而不是在此处接收),但除此之外,这是完全相同的。

所以在你的活动中,你应该有这样的东西:

/**
 * Handler of incoming messages from clients.
 */
class IncomingHandler extends Handler {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case MSG_GOT_SMS:
                // Fill your text view here using the msg.obj (you put it there)
                break;
            default:
                super.handleMessage(msg);
        }
    }
}

在你的服务中(接收短信的位),你应该有:

public void sendText(String sms) {
    // Create and send a message to the service, using a supported 'what' value
    Message msg = Message.obtain(null, MyActivity.MSG_GOT_SMS,O, 0, sms);
    try {
        mService.send(msg);
    } catch (RemoteException e) {
        e.printStackTrace();
    }
}