Android 隐式意图是否在内部进行广播?
下面的代码使用隐式意图打开URLAndroid 隐式意图是否在内部进行广播?,android,android-intent,android-broadcast,Android,Android Intent,Android Broadcast,下面的代码使用隐式意图打开URL EditText editText = (EditText) findViewById(R.id.url_editText); Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(editText.getText().toString())); startActivity(myIntent); 它显示了所有支持此action In
EditText editText = (EditText) findViewById(R.id.url_editText);
Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(editText.getText().toString()));
startActivity(myIntent);
它显示了所有支持此action Intent.action_视图的应用程序,如Chrome、Firefox等。因此,我假设此过程在内部使用action Intent.action_视图进行广播。如果我误解了,请纠正我
根据上述假设,我尝试了以下代码
Intent myIntent = new Intent(Intent.ACTION_VIEW);
sendBroadcast(myIntent);
但它不起作用。没有显示任何内容。有什么区别。有人能消除我的困惑吗
因此,我假设此过程在内部执行带有动作意图的广播。动作视图
没有
但它不起作用。没有显示任何内容
当然
有什么区别
startActivity()
!=sendBroadast()
。它们是独立的运算,就像加法和减法是独立的数学运算一样
如果您希望将Intent
系统看作有点像消息总线,那么该总线有三个完全独立的通道:
- 活动(
)startActivity()
- 服务(
,startService()
)bindService()
- 广播(
,sendBroadcast()
等)sendOrderedBroadcast()
意图。如果调用sendBroadcast()。如果调用startActivity()
则意图将被发送到活动
。这就是为什么:
Intent myIntent = new Intent(Intent.ACTION_VIEW);
sendBroadcast(myIntent);
不启动活动
,因为意图
仅对广播接收者可见
startService()
也是如此。通过调用该方法,Intent
将只针对服务
。我猜这种混淆来自广播这个词。这意味着它被发送到任何地方,每个人都可以看到,但事实并非如此。广播只对广播接收者可见
,就像调用startActivity()
一样意图
只针对活动
而不针对其他活动
您可以找到更多信息。这与。在启动活动
之前,它要求系统向其提供活动
的所有内容的列表,并且可以处理意图——此处不涉及广播
至于sendBroadcast()
——本质上是一样的,但对于BroadcastReceiver
s。机制是相同的:匹配意图过滤器,传递意图
,但是意图
被传递给所有接收者,而不管其数量如何(与startActivity()
所做的相反,因为它只能导致启动单个活动,因此如果有多个匹配的活动,则需要选择一个)
我不认为有任何广播接收者注册为意图.行动_视图
(因为这是一个行动,其目的是开始一项活动,没有逻辑上的理由去听它,什么也不开始,除了计算活动启动或其他)但是你可以自己注册一个,看看会发生什么