setAction()对意图有何作用(广播) [英] What does setAction () do for intent (Broadcast)
问题描述
setAction()在意图(服务)中起什么作用
What does setAction () do in intent (Service)
我并没有真正了解 setAction()的作用,我大多在为活动数据传递的服务"示例中找到了它.字符串可以自由设置吗?它到底是做什么的?
I don't really get what setAction () does, I mostly found it in "service to activity data passing" example. Can the string be set freely ?. What does it do exactly ?
创建广播意图时,它必须包含一个ACTION STRING 除了可选数据和类别字符串.与 标准意图,将数据添加到 结合使用键值对和putExtra()方法的广播意图 目的对象.可以通过调用addCategory()方法将可选类别字符串分配给广播意图.
When a broadcast intent is created, it must include an ACTION STRING in addition to optional data and a category string. As with standard intents, data is added to a broadcast intent using key-value pairs in conjunction with the putExtra() method of the intent object. The optional category string may be assigned to a broadcast intent via a call to the addCategory() method.
标识广播事件的操作字符串必须为 唯一,通常使用应用程序的Java包名称语法. 例如,以下代码片段创建并发送广播 意图,包括唯一的操作字符串和数据:
The action string, which identifies the broadcast event, must be unique and typically uses the application’s Java package name syntax. For example, the following code fragment creates and sends a broadcast intent including a unique action string and data:
Intent intent = new Intent();
intent.setAction("com.example.Broadcast");
intent.putExtra("HighScore", 1000); sendBroadcast(intent);
我看到的另一种变化是:
Another variation I've seen is :
Intent broadcastIntent = new Intent();
broadcastIntent.setAction("com.truiton.broadcast.string");
broadcastIntent.putExtra("Data", "Broadcast Data");
sendBroadcast(broadcastIntent);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
broadcastIntent.setAction("com.truiton.broadcast.integer");
broadcastIntent.putExtra("Data", 10);
sendBroadcast(broadcastIntent);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
broadcastIntent .setAction("com.truiton.broadcast.arraylist");
broadcastIntent.putExtra("Data", mList);
sendBroadcast(broadcastIntent);
这看起来更像是识别传入的数据类型.
this looks to more like indentify the incoming data type.
这是否意味着标识事件,传入的数据类型,一个 action 或每个 Intent 创建?可以免费设置吗?
Does it mean to identifies event, incoming data type, an action or each Intent creation ? Can it be set free?
推荐答案
使用<activity>
标记内的<action>
标记在 Manifest.xml 文件中设置操作与设置它相同在Java文件中以编程方式使用intent.setAction.
Using the <action>
tag inside <activity>
tag to set an action in your Manifest.xml file is same as setting it programmatically using intent.setAction inside the java file.
这些通常用于广播接收器.
These are generally used for Broadcast Receivers.
以下是xml示例:
<receiver android:name="MyReceiver" >
<intent-filter>
<action android:name="com.example.SendBroadcast" >
</action>
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" >
</action>
</intent-filter>
</receiver>
但是,如果您希望BroadCastReceiver以编程方式注册和注销,则可以使用setAction().
But when you want a BroadCastReceiver to register and unregister programatically then setAction() can be used.
Intent intent = new Intent();
intent.setAction("com.example.SendBroadcast");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
sendBroadcast(intent);
有关更多信息,请检查: http://www.techotopia.com/index.php/Android_Broadcast_Intents_and_Broadcast_Receivers
For more information just check: http://www.techotopia.com/index.php/Android_Broadcast_Intents_and_Broadcast_Receivers
这篇关于setAction()对意图有何作用(广播)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!