我在AndroidManifest.xml中遇到过类似的东西:
<receiver android:name="com.testco.test.TestReceiver"/>
Run Code Online (Sandbox Code Playgroud)
以上是TestReceiver扩展的BroadcastReceiver类.我认为接收器将接收所有意图,但显然它没有,除非我在其中添加intent-filter标签,否则它不起作用.那么如果它没有intent-filter,它会怎么做?这是一个错字还是真的做了什么?
更新:我在这个链接的帮助下想出了这个尝试让没有过滤器的广播接收器
您可以将操作字符串设置为intent,然后广播它,而不是使用通常的String标识符调用广播.示例代码供参考:
Intent notifyIntent = new Intent(getApplicationContext(), TestReceiver.class);
notifyIntent.setAction("RECEIVE");
sendBroadcast(notifyIntent);
Run Code Online (Sandbox Code Playgroud)
BroadcastReceiver的处理是一样的.
在隐式意图的情况下需要Intent过滤器,如果未指定intent过滤器,则必须显式调用它.因此,要调用此接收器,您需要调用:
Intent intent = new Intent(getApplicationContext(), com.testco.test.TestReceiver.class);
sendBroadcast(intent);`
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6286 次 |
| 最近记录: |