首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

短信防火墙,进来帮帮忙吧解决办法

2012-05-08 
短信防火墙,进来帮帮忙吧小弟正在学习android开发,遇到不懂的地方,还请各位大神指教。当BroadcastReceiver

短信防火墙,进来帮帮忙吧
小弟正在学习android开发,遇到不懂的地方,还请各位大神指教。
当BroadcastReceiver接收到广播后,就调用Activity中的方法,可这样是实例化不了的

Activity

Java code
public class MyActivity extends Activity {    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);           setContentView(R.layout.main);}public void function(){//方法////}}

BroadcastReceiver
Java code
public class SMSBroadcastReceiver extends BroadcastReceiver {DBHelper db;    public void onReceive(Context context, Intent intent) {            MyActivity ma=new MyActivity ();            ma.function();}}


[解决办法]
你如果不想打开Activity,就直接把这个function写到BroadcastReceiver里面的onReceive不就可以了吗?化繁为简。

探讨

我尝试了一下这样,可这样只会重新打开Activity,我只想在function里实现ListView的更新
Java code

Intent intent =new Intent(context,MyActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |……

[解决办法]
如果Activity已打开过,而不想重新打开,有几种方法:

1、在AndroidManifest.xml里面设置Activity android:launchMode="singleInstance"就不会重新打开Activity,然后用intent的方式,在Activity里面添加一个
@Override
protected void onNewIntent(Intent intent) 
{
对接收到的intent进行处理
}

2、直接在Activity里面注册一个SMSBroadcastReceiver接收器

3、或者在Activity里面注册自定义Receiver,由SMSBroadcastReceiver发送广播过来。

条条大道通罗马,方法很多的,找一种适合的方法吧。

探讨

我尝试了一下这样,可这样只会重新打开Activity,我只想在function里实现ListView的更新
Java code

Intent intent =new Intent(context,MyActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |……

热点排行