如何从主要活动中调用BroadCast接收器类

时间:2014-08-14 17:30:12

标签: android broadcastreceiver

我正在开发一个Android应用程序,它将过滤掉特定号码的消息并阅读其消息正文。

我写了一个扩展到广播接收器的课程如下。

package com.tutecentral.restfulapiclient;

import android.content.BroadcastReceiver;
import android.content.BroadcastReceiver; 
import android.content.Context;  
import android.content.Intent;  
import android.content.SharedPreferences; 
import android.os.Bundle;  
import android.telephony.SmsMessage;  
import android.util.Log;
import android.widget.Toast;  

public class Filter extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub

         if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {  
             Bundle extras = intent.getExtras();  
             if (extras != null) {  
                 Object[] pdus = (Object[])extras.get("pdus");  
                 if (pdus.length < 1) return;   
                 StringBuilder sb = new StringBuilder();  
                 String sender = null;  
                 for (int i = 0; i < pdus.length; i++) {  
                     SmsMessage message = SmsMessage.createFromPdu((byte[]) pdus[i]);  
                     if (sender == null){  
                         sender = message.getOriginatingAddress(); //get the sender  
                     }  

                     String text = message.getMessageBody(); //get the message body  
                     Log.d("my broadcast","works");
                     //System.out.println("tsettexttt"+text);
                     if (text != null){  
                         sb.append(text);  
                     }

                     System.out.println("texttst"+text);

                  }  
                 String number = "+94716355075"; //add the number
                 abortBroadcast();
             } 
         } 


     } 

}

现在我要做的是从主活动中调用此类,并从此类中获取结果(String text:包含消息体),以便我可以将该值用于应用程序中的其他选项。

我查看了有关此问题的每个stackoverflow问题,但无法找到答案。请善待我帮忙!

提前致谢, 此致

1 个答案:

答案 0 :(得分:0)

您可以从BroadcastReceiver传递一些参数打开您的活动,一旦活动打开,如果某些参数已传递给此活动,请调用您想要的方法。

希望它有所帮助!

编辑:检查此代码!

@Override
public void onReceive(Context context, Intent intent) {
   //Do your normal work...   

   //start activity
    Intent i = new Intent(context,YourActivity.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    i.putExtra("param","value"); //your parameter
    context.startActivity(i);
}