setAction()对意图有何作用(广播) [英] What does setAction () do for intent (Broadcast)

查看:159
本文介绍了setAction()对意图有何作用(广播)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆