Java 广播接收机;getIntent()差异
这是一个愚蠢的问题。搜索后得到答案;) Android使用接收器的概念和Java 广播接收机;getIntent()差异,java,android,android-intent,broadcast,Java,Android,Android Intent,Broadcast,这是一个愚蠢的问题。搜索后得到答案;) Android使用接收器的概念和“广播”意图的概念来帮助您从根本上监听手机上发生的某些动作。您可以实现一个接收器来监听您自己的意图,您可以在应用程序内部发送这些意图(即,可能对应用程序的某个数据集进行了更改,您希望将其广播给您的接收器,并让接收器做一些额外的工作),但同样,接收器通常用于收听由系统本身广播的意图 例如: 在Android清单中,定义一个新的接收者: } 因此,请注意,我们扩展了BroadcastReceiver类并覆盖了onReceive方
“广播”
意图的概念来帮助您从根本上监听手机上发生的某些动作。您可以实现一个接收器来监听您自己的意图,您可以在应用程序内部发送这些意图(即,可能对应用程序的某个数据集进行了更改,您希望将其广播给您的接收器,并让接收器做一些额外的工作),但同样,接收器通常用于收听由系统本身广播的意图
例如:
在Android清单中,定义一个新的接收者:
}
因此,请注意,我们扩展了BroadcastReceiver
类并覆盖了onReceive
方法。每当使用动作的意图PHONE\u状态
被广播时,就会调用该方法,从中我们可以获得存储在intent
中的额外信息并对其进行处理。请注意,在这种情况下ction extra是“状态”,这里的状态将是“振铃”、“摘机”或“空闲”
我希望你现在就明白了。getIntent()
用于获取启动活动的意图
。对于活动
,并不总是需要知道是哪个意图
启动了他。因为例如,从启动器
启动的startActivity
没有什么特别之处。
只有当一个活动
想要做一些特别的事情时,他才想明确地知道它。比如“创建电子邮件”,而不是去邮件应用程序
请记住,只有1Intent
可以启动1活动
BroadcastReceiver
是在一个或多个Intent
上注册自己的组件。如果通过sendBroadcast
发送/广播该BroadcastReceiver
,则该BroadcastReceiver
将启动。因此BroadcastReceiver
总是想知道是哪个Intent
启动了他,WIFI\u已连接
,或类似。据我所知,这就是为什么与只有getIntent()
的活动相比,onReceive
上有一个参数的原因(如果我错了,请纠正我)
请记住,只发送了1个Intent
,并且可以启动0个或多个BroadcastReceiver
。(所有注册的人都已启动)您是否至少阅读了BroadcastReceiver
的文档以及getIntent()的内容
是吗?当你对两者的用法感到困惑时,需要区分两者。你对它们的用法了解多少?写下让你困惑的要点。@luks yep我读过。这就是让我困惑的原因!sanjeev见下文。你的问题完全不清楚,就像让我们解释两者之间的区别一样n一只狗和一辆车。请仔细阅读BroadcastReceiver文档,找到一些关于它们使用的教程,以了解它们的用途。@NamanArora:我认为BroadcastReceiver
是Apple
和getIntent()
是pizza
太棒了!非常简单,切中要害!谢谢!
<receiver android:name=".receivers.PhoneIntentReceiver" android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"></action>
</intent-filter>
</receiver>
public class PhoneIntentReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//get the data from the passed intent
//this is the intent that was broadcasted by the system
Bundle bundle = intent.getExtras();
String phoneState = bundle.getString("state");
String phoneNumber = bundle.getString("incoming_number");
//perform operations using phoneState data
}