我有一个应用程序发送短信以检查我的数据包中的剩余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?
答案 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();
}
}