对sms进行实时监视SMSReceiver,如果收到短消息,则立即向主线程报告,通知主线程刷新界面。
在这里,主线程如何接受这个通知呢?
在这里,主线程如何接受这个通知呢?
解决方案 »
- 如何绑定Listview和checkbox?
- 关于ListView中CheckBox 用程序全选的问题
- 怎么从主Activity跳转到一个ActivityGroup
- android 远程连接电脑桌面原理,有谁知道和我说下
- 求教:短信拦截模拟器正常运行,为何在真机上一收到短信就挂了~?
- 问问自己./emulator 之后默认启动的avd是哪个avd?
- actionBar添加tabs为什么显示不出来?新手,求解.....
- 多个滑动事件冲突如何处理?
- Android和JS交互的问题
- android mediaplayer异常
- android中编写XML文件时候代码提示没有提示
- 如何学习Android的应用框架?
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(strAction)) {
// 有短信接收
// 开始想主线程发送消息
MainActivity mainActivity = new MainActivity();
Handler hanlder = mainActivity.getSmsHandler();// 得到mainActivity中Handler实例
Message message = new Message();
message.what = 1;
hanlder.sendMessage(message);//发送消息
}
}
}
public class MainActivity extends ListActivity { // 短信删除提示信息句柄
public Handler smsHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch(msg.what) {
case 1:// 在这里耍新界面 重新加载listview
// 可是嘞 刷新不了啊
break;
}
}
};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// .....
}
}
请大家帮忙看下哪里 代码写的不合适哦 谢谢。
case 1:
我是在这个地方重新查询数据库,然后重新setAdapter,
问题出在执行 myMessageDao = DaoFactory.getMessageDao(this);时出错
错误提示:myMessageDao 为null
break;
我觉得应该还是由SMSReceiver 发送消息的问题、,因为,我在显示界面上加一个刷新按钮,执行同样的代码, 操作数据库就米有问题啊、
// 开始想主线程发送消息
MainActivity mainActivity = new MainActivity();
Handler hanlder = mainActivity.getSmsHandler();// 得到mainActivity中Handler实例你怎么能自己new一个MainActivity呢??这个新的MainActivity实例和你当前界面中显示的MainActivity根本不是一个东西,所以你更新的所有UI状态在界面上你都无法看到。正确的做法,在MainActivity中注册SMSReceiver,然后可以直接使用SMSReceiver 中的Handler来sendMessage。
正确的做法,在MainActivity中注册SMSReceiver,然后可以直接使用MainActivity中的Handler来sendMessage。
acitivty不是这么用的啊
MainActivity mainActivity = new MainActivity();
Handler hanlder = mainActivity.getSmsHandler();// 得到mainActivity中Handler实例
这里得到的handler 与你的
public class MainActivity extends ListActivity { // 短信删除提示信息句柄
public Handler smsHandler = new Handler() {
@Override
public void handleMessage(Message msg) {这里面的handler根本就不是同一个东西,怎么可能能够通信
SMSReceiver是一个BroadcastReceiver, 如果把 SMSReceiver定义成内部类的话,该如何注册和解除注册嘞,
在此程序中,MainActivity只是一个普通的activity,如何用户关闭掉了,是不是就不能监听到收到的SMS喽、 因为SMSReceiver就是监听sms的
SMSReceiver是一个BroadcastReceiver, 如果把 SMSReceiver定义成内部类的话,该如何注册和解除注册嘞,
在此程序中,MainActivity只是一个普通的activity,如何用户关闭掉了,是不是就不能监听到收到的SMS喽、 因为SMSReceiver就是监听sms的
这样写的话,当然是activity不在的时候,receiver就不工作了,本来你这儿reciver就是用来刷新UI的,activity不在了,UI也不用刷新了啊
首先 谢谢您 的 跟帖回答!我的本意是 当MainActivity存在的时候,自动刷新界面, 被销毁的时候就不刷新了。
而且 还要时刻监视sms, 所以 Receiver 和 MainActivity在这儿不能搭配使用了、 还得注册全局的Receiver, 所以, 只有在MainActivity中 使用TimerTask 和 Handler了, 问题解决了 哈哈、