我正在开发一个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问题,但无法找到答案。请善待我帮忙!
提前致谢, 此致
答案 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);
}