Android从接收器到活动

时间:2010-07-14 21:22:30

标签: android android-activity sms broadcastreceiver

我刚刚进入Android开发阶段,我对接收器类和活动类之间的通信有疑问。我是JAVA和Android的新手,所以我希望我听起来不是太愚蠢。我正在开发一个应用程序,我拦截一条短信,然后基于该短信的各种元素,我可能会删除它一旦被保存到收件箱。我有一个拦截txt消息的接收器类,我还能够使用按钮在活动类中使用代码从我的收件箱中删除消息。我遇到的问题是在接收器类和删除消息的代码所在的活动类之间进行通信。我尝试将该代码直接放入接收器类中,但我确信大多数人已经知道BroadcastReceiver类似乎不支持删除消息所需的内容。我一直在寻找答案,但一直找不到任何东西。老实说,我不确定我对JAVA和Android有足够的了解,如果我看到它,甚至可以识别解决方案。

2 个答案:

答案 0 :(得分:0)

如果您需要完成没有界面的工作,请查看创建Service,如果您需要用户界面,只需启动Activity

您可以使用接收方的Context方法的onReceive参数来启动新服务/活动

您可以使用Extras在上下文之间传递参数。因此,您可以添加消息ID或整个消息,并将其传递给您的服务/活动并在那里进行处理。

答案 1 :(得分:0)

您可以使用IntentService实现处理消息逻辑。当您的接收者获得新的incomming消息时,启动IntentService传递带有消息数据的意图。

接收机

onReceive(Context context, Intent intent) {
    //Setup Intent
    Intent i = new Intent(context, MyIntentService.class);
    i.setAction(MyIntentService.HANDLE_MESSAGE);        
    //Pass data to intent
    i.putExtra(MyIntentService.MESSAGE_DATA, data);
    //Start Intent Service          
    context.startService(i);
}

MyIntentService

onHandleIntent(Intent i){
    String action = i.getAction();
    if(action != null && action.equals(MyIntentService.HANDLE_MESSAGE){
        //Get data and implement message logic
    }
}

希望它有所帮助。