您好,我一直遇到广播接收器和将信息传递给另一个 Activity 的问题。我正在尝试创建一个应用程序来捕获传入的 SMS 消息,在文本中查找网站,然后弹出一个警告对话框,询问用户是否想访问该网站。
public class TextReceiver extends BroadcastReceiver{
public void onReceive(Context context, Intent intent)
{
// .. other code that
// sets received SMS into message
Toast toast = Toast.makeText(context,
"Received Text: " + message.getMessageBody(), Toast.LENGTH_LONG);
toast.show();
}
这样代码就可以正常工作了,接收到一个文本,它会弹出一 strip 有消息的 toast 。 toast 没有用,但它表明接收器可以正常工作。但我想与一个 Activity 进行交流以显示一个警报对话框并启动一个 webView。我已经编写了将对网站进行字符串搜索并打开 webView 的代码。是否可以从广播接收器获取字符串并执行类似的操作?:
public class ReceiveText extends Activity{
public void onCreate(Bundle savedInstanceState) {
// Somehow pass the string from the receiver into this activity,
//stored in variable messages
findOpen(messages);
// is that possible?
}
public class findOpen(string messages){
// do stuff ... open alert...open site if OK
}
所以基本上我只想将一个字符串从广播接收器传递到另一个将使用该字符串的 Activity 。其余代码基本上就位,我只需要那个字符串...我是这个和 Java 的新手,我们将不胜感激。谢谢
最佳答案
在您想要获取数据的 Activity 中实例化一个 BroadcastReceiver,例如:
private BroadcastReceiver mServiceReceiver = new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) { //Extract your data - better to use constants... String IncomingSms=intent.getStringExtra("incomingSms");// String phoneNumber=intent.getStringExtra("incomingPhoneNumber"); } };
在
onPause()
上取消注册您的接收器:@Override protected void onPause() { super.onPause(); try { if(mServiceReceiver != null){ unregisterReceiver(mServiceReceiver); } } catch (Exception e) { e.printStackTrace(); } }
在
onResume()
上注册:protected void onResume() { super.onResume(); IntentFilter filter = new IntentFilter(); filter.addAction("android.intent.action.SmsReceiver"); registerReceiver(mServiceReceiver , filter); }
通过 Intent 从服务广播您的数据,例如:
Intent i = new Intent("android.intent.action.SmsReceiver").putExtra("incomingSms", message); i.putExtra("incomingPhoneNumber", phoneNumber); context.sendBroadcast(i);
就是这样!祝你好运!
关于android - 将数据从广播接收器传递到另一个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9137477/