第6章组件通信与广播消息67487.ppt

上传人:s****8 文档编号:93910393 上传时间:2023-07-17 格式:PPT 页数:61 大小:779KB
返回 下载 相关 举报
第6章组件通信与广播消息67487.ppt_第1页
第1页 / 共61页
第6章组件通信与广播消息67487.ppt_第2页
第2页 / 共61页
点击查看更多>>
资源描述

《第6章组件通信与广播消息67487.ppt》由会员分享,可在线阅读,更多相关《第6章组件通信与广播消息67487.ppt(61页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第6章章 组件通信与广播消息件通信与广播消息 本章学习目标n了解使用Intent进行组件通信的原理n掌握使用Intent启动Activity的方法n掌握获取Activity返回值的方法n了解Intent过滤器的原理与匹配机制n掌握发送和接收广播消息的方法6.1 Intent简介 nIntent是一个动作的完整描述,包含了动作的产生组件、接收组件和传递的数据信息qIntent也可称为一个在不同组件之间传递的消息,这个消息在到达接收组件后,接收组件会执行相关的动作q Intent为Activity、Service和BroadcastReceiver等组件提供交互能力qIntent的用途n启动Ac

2、tivity和Servicen在Android系统上发布广播消息q广播消息可以是接收到特定数据或消息,也可以是手机的信号变化或电池的电量过低等信息6.1 Intent简介n6.1.1 启动Activityq在Android系统中,应用程序一般都有多个Activity,Intent可以实现不同Activity之间的切换和数据传递q启动Activity方式n显式启动,必须在Intent中指明启动的Activity所在的类n隐式启动,Android系统根据Intent的动作和数据来决定启动哪一个Activity,也就是说在隐式启动时,Intent中只包含需要执行的动作和所包含的数据,而无需指明具体启

3、动哪一个Activity,选择权有Android系统和最终用户来决定6.1 Intent简介n6.1.1 启动Activityq显式启动n使用Intent显式启动Activityn创建一个Intentn指定当前的应用程序上下文以及要启动的Activityn把创建好的这个Intent作为参数传递给startActivity()方法1.Intent intent=new Intent(IntentDemo.this,ActivityToStart.class);2.startActivity(intent);6.1 Intent简介n6.1.1 启动Activityq显式启动n下面用IntentD

4、emo示例说明如何使用Intent启动新的Activity。IntentDemo示例包含两个Activity,分别是IntentDemoActivity和NewActivity。n程序默认启动的Activity是IntentDemo,在用户点击“启动Activity”按钮后,程序启动的Activity是NewActivity 6.1 Intent简介n6.1.1 启动Activityq显式启动n在IntentDemo示例中使用了两个Activity,因此需要在AndroidManifest.xml文件中注册这两个Activity。注册Activity应使用标签,嵌套在标签内部。6.1 Inte

5、nt简介n6.1.1 启动Activityq显式启动nAndroidManifest.xml文件代码如下 1.2.6.7.9.10.11.12.13.14.16.17.18.19.6.1 Intent简介n6.1.1 启动Activityq显式启动nAndroid应用程序中,用户使用的每个组件都必须在AndroidManifest.xml文件中的节点内定义。在上面的代码中,节点下共有两个节点,分别代表应用程序中所使用的两个Activity,IntentDemoActivity和NewActivity。6.1 Intent简介n6.1.1 启动Activityq显式启动n在IntentDemoA

6、ctivity.java文件中,包含了使用Intent启动Activity的核心代码:1.Button button=(Button)findViewById(R.id.btn);2.button.setOnClickListener(new OnClickListener()3.public void onClick(View view)4.Intent intent=new Intent(IntentDemoActivity.this,NewActivity.class);5.startActivity(intent);6.7.);6.1 Intent简介n6.1.1 启动Activity

7、q显式启动n在点击事件的处理函数中,Intent构造函数的第1个参数是应用程序上下文,在这里就是IntentDemoActivity;第2个参数是接收Intent的目标组件,这里使用的是显式启动方式,直接指明了需要启动的Activity。6.1 Intent简介n6.1.1 启动Activityq隐式启动n隐式启动的好处在于不需要指明需要启动哪一个Activity,而由Android系统来决定,这样有利于降低组件之间的耦合度。n选择隐式启动Activity,Android系统会在程序运行时解析Intent,并根据一定的规则对Intent和Activity进行匹配,使Intent上的动作、数据与

8、Activity完全吻合。n匹配的组件可以是程序本身的Activity,也可以是Android系统内置的Activity,还可以是第三方应用程序提供的Activity。n因此,这种方式强调了Android组件的可复用性。6.1 Intent简介n6.1.1 启动Activityq隐式启动n如果程序开发人员希望启动一个浏览器,查看指定的网页内容,却不能确定具体应该启动哪一个Activity,此时则可以使用Intent的隐式启动方式,由Android系统在程序运行时决定具体启动哪一个应用程序的Activity来接收这个Intent。n程序开发人员可以将浏览动作和Web地址作为参数传递给Intent

9、,Android系统则通过匹配动作和数据格式,找到最适合于此动作和数据格式的组件。1.Intent intent=new Intent(Intent.ACTION_VIEW,Uri.parse(http:/.hk);2.startActivity(intent);6.1 Intent简介n6.1.1 启动Activityq隐式启动nIntent的动作是Intent.ACTION_VIEW,数据是Web地址,使用Uri.parse(urlString)方法,可以简单的把一个字符串解释成Uri对象。Android系统在匹配Intent时,首先根据动作Intent.ACTION_VIEW,得知需要启

10、动具备浏览功能的Activity,但具体是浏览电话号码还是浏览网页,还需要根据URI的数据类型来做最后判断。因为数据提供的是Web地址http:/,所以最终可以判定Intent需要启动具有网页浏览功能的Activity。在缺省情况下,Android系统会调用内置的Web浏览器。6.1 Intent简介n6.1.1 启动Activityq隐式启动nIntent的语法如下:1.Intent intent=new Intent(Intent.ACTION_VIEW,Uri.parse(urlString);6.1 Intent简介n6.1.1 启动Activityq隐式启动nIntent构造函数的第

11、1个参数是Intent需要执行的动作,Android系统支持的常见动作字符串常量可以参考表。第2个参数是URI,表示需要传递的数据。动作动作说明说明ACTION_ANSWER打开接听电话的Activity,默认为Android内置的拨号界面ACTION_CALL打开拨号盘界面并拨打电话,使用Uri中的数字部分作为电话号码ACTION_DELETE打开一个Activity,对所提供的数据进行删除操作ACTION_DIAL打开内置拨号界面,显示Uri中提供的电话号码ACTION_EDIT打开一个Activity,对所提供的数据进行编辑操作ACTION_INSERT打开一个Activity,在提供数

12、据的当前位置插入新项ACTION_PICK启动一个子Activity,从提供的数据列表中选取一项ACTION_SEARCH启动一个Activity,执行搜索动作ACTION_SENDTO启动一个Activity,向数据提供的联系人发送信息ACTION_SEND启动一个可以发送数据的ActivityACTION_VIEW最常用的动作,对以Uri方式传送的数据,根据Uri协议部分以最佳方式启动相应的Activity进行处理。对于http:address将打开浏览器查看;对于tel:address将打开拨号界面并呼叫指定的电话号码ACTION_WEB_SEARCH打开一个Activity,对提供的数

13、据进行Web搜索6.1 Intent简介n6.1.1 启动Activityq隐式启动nWebViewIntentDemo示例说明了如何隐式启动Activity,用户界面6.1 Intent简介n6.1.1 启动Activityq隐式启动n当用户在文本框中输入Web地址后,通过点击“浏览此URL”按钮,程序根据用户输入的Web地址生成一个Intent,并以隐式启动的方式调用Android内置的Web浏览器,并打开指定的Web页面。本例输入的Web地址http:/.hk,打开页面后的效果如图6.1 Intent简介n6.1.2 获取Activity返回值q在上一小节IntentDemo示例中,通过

14、startActivity(Intent)方法启动Activity,启动后的两个Activity之间相互独立,没有任何的关联。在很多情况下,后启动的Activity是为了让用户对特定信息进行选择,在后启动的Activity关闭时,这些信息是需要返回给先前启动的Activity。q后启动的Activity称为为“子Activity”,先启动的Activity称为“父Activity”。q如果需要将子Activity的信息返回给父Activity,则可以使用Sub-Activity的方式去启动子Activity。6.1 Intent简介n6.1.2 获取Activity返回值q获取子Activit

15、y的返回值,一般可以分为以下三个步骤:n以Sub-Activity的方式启动子Activity;n设置子Activity的返回值;n在父Activity中获取返回值;n下面详细介绍每一个步骤的过程和代码实现。6.1 Intent简介n6.1.2 获取Activity返回值q以Sub-Activity的方式启动子Activityn以Sub-Activity方式启动子Activity,需要调用startActivityForResult(Intent,requestCode)函数,参数Intent用于决定启动哪个Activity,参数requestCode是请求码。因为所有子Activity返回时

16、,父Activity都调用相同的处理函数,因此父Activity使用requestCode来确定数据是哪一个子Activity返回的6.1 Intent简介n6.1.2 获取Activity返回值q以Sub-Activity的方式启动子Activityn显式启动子Activity的代码如下 n隐式启动子Activity的代码如下 1.int SUBACTIVITY1=1;2.Intent intent=new Intent(this,SubActivity1.class);3.startActivityForResult(intent,SUBACTIVITY1);1.int SUBACTIVI

17、TY2=2;2.Uri uri=Uri.parse(content:/contacts/people);3.Intent intent=new Intent(Intent.ACTION_PICK,uri);4.startActivityForResult(intent,SUBACTIVITY2);6.1 Intent简介n6.1.2 获取Activity返回值q设置子Activity的返回值n在子Activity调用finish()函数关闭前,调用setResult()函数设定需要返回给父Activity的数据。setResult()函数有两个参数,一个是结果码,一个是返回值。结果码表明了子A

18、ctivity的返回状态,通常为Activity.RESULT_OK(正常返回数据)或者Activity.RESULT_CANCELED(取消返回数据),也可以是自定义的结果码,结果码均为整数类型。返回值封装在Intent中,也就是说子Activity通过Intent将需要返回的数据传递给父Activity。数据主要以Uri形式返回给父Activity,此外还可以附加一些额外信息,这些额外信息用Extra的集合表示。6.1 Intent简介n6.1.2 获取Activity返回值q设置子Activity的返回值n以下代码说明如何在子Activity中设置返回值:1.Uri data=Uri.p

19、arse(tel:+tel_number);2.Intent result=new Intent(null,data);3.result.putExtra(address,JD Street);4.setResult(RESULT_OK,result);5.finish();6.1 Intent简介n6.1.2 获取Activity返回值q在父Activity中获取返回值n当子Activity关闭后,父Activity会调用onActivityResult()函数,用了获取子Activity的返回值。n如果需要在父Activity中处理子Activity的返回值,则重载此函数即可。nonAct

20、ivityResult()函数的语法如下:n其中第1个参数requestCode是请求码,用来判断第3个参数是哪一个子Activity的返回值;resultCode用于表示子Activity的数据返回状态;Data是子Activity的返回数据,返回数据类型是Intent。根据返回数据的用途不同,Uri数据的协议则不同,也可以使用Extra方法返回一些原始类型的数据。1.public void onActivityResult(int requestCode,int resultCode,Intent data);6.1 Intent简介n6.1.2 获取Activity返回值q在父Activ

21、ity中获取返回值n以下代码说明如何在父Activity中处理子Activity的返回值:1.private static final int SUBACTIVITY1=1;2.private static final int SUBACTIVITY2=2;3.Override 4.public void onActivityResult(int requestCode,int resultCode,Intent data)5.Super.onActivityResult(requestCode,resultCode,data);6.switch(requestCode)7.case SUBA

22、CTIVITY1:8.if(resultCode=Activity.RESULT_OK)9.Uri uriData=data.getData();10.else if(resultCode=Activity.RESULT_CANCEL)11.12.break;13.case SUBACTIVITY2:14.if(resultCode=Activity.RESULT_OK)15.Uri uriData=data.getData();16.17.break;18.19.6.1 Intent简介n6.1.2 获取Activity返回值q在父Activity中获取返回值n代码的第1行和第2行是两个子A

23、ctivity的请求码,在第7行对请求码进行匹配。n代码第9行和第11行对结果码进行判断,如果返回的结果码是Activity.RESULT_OK,则在代码的第10行使用getData()函数获取Intent中的Uri数据;n如果返回的结果码是Activity.RESULT_CANCELED,则放弃所有操作。6.1 Intent简介n6.1.2 获取Activity返回值q在父Activity中获取返回值nActivityCommunication示例说明了如何以Sub-Activity方式启动子Activity,以及如何使用Intent进行组件间通信。6.1 Intent简介n6.1.2 获取

24、Activity返回值q在父Activity中获取返回值n当用户点击“启动Activity1”和“启动Activity2”按钮时,程序将分别启动子SubActivity1和SubActivity2。6.1 Intent简介n6.1.2 获取Activity返回值q在父Activity中获取返回值nSubActivity1提供了一个输入框,以及“接受”和“撤销”两个按钮。如果在输入框中输入信息后点击“接受”按钮,程序会把输入框中的信息传递给其父Activity,并在父Activity的界面上显示。n如果用户点击“撤销”按钮,则程序不会向父Activity传递任何信息。nSubActivity2主

25、要是为了说明如何在父Activity中处理多个子Activity,因此仅提供了用于关闭SubActivity2的“关闭”按钮。6.1 Intent简介n6.1.2 获取Activity返回值q在父Activity中获取返回值nActivityCommunication示例的文件结构q父Activity的代码在ActivityCommunication.java文件中,界面布局在main.xml中;两个子Activity的代码分别在SubActivity1.java和SubActivity2.java文件中,界面布局分别在subactivity1.xml和subactivity2.xml中。6.

26、1 Intent简介n6.1.2 获取Activity返回值q在父Activity中获取返回值nActivityCommunicationActivity.java文件的核心代码如下1public class ActivityCommunicationActivity extends Activity 2private static final int SUBACTIVITY1=1;3private static final int SUBACTIVITY2=2;4TextView textView;5Override6public void onCreate(Bundle savedInst

27、anceState)7super.onCreate(savedInstanceState);8setContentView(R.layout.main);9textView=(TextView)findViewById(R.id.textShow);10final Button btn1=(Button)findViewById(R.id.btn1);11final Button btn2=(Button)findViewById(R.id.btn2);12 13btn1.setOnClickListener(new OnClickListener()14public void onClick

28、(View view)15Intent intent=new Intent(ActivityCommunication.this,SubActivity1.class);16startActivityForResult(intent,SUBACTIVITY1);176.1 Intent简介n6.1.2 获取Activity返回值q在父Activity中获取返回值18);1920btn2.setOnClickListener(new OnClickListener()21public void onClick(View view)22Intent intent=new Intent(Activi

29、tyCommunication.this,SubActivity2.class);23startActivityForResult(intent,SUBACTIVITY2);2425);262728Override29protected void onActivityResult(int requestCode,int resultCode,Intent data)30super.onActivityResult(requestCode,resultCode,data);316.1 Intent简介n6.1.2 获取Activity返回值q在父Activity中获取返回值32switch(re

30、questCode)33case SUBACTIVITY1:34if(resultCode=RESULT_OK)35Uri uriData=data.getData();36textView.setText(uriData.toString();3738break;39case SUBACTIVITY2:40break;4142436.1 Intent简介n6.1.2 获取Activity返回值q在父Activity中获取返回值n在代码的第2行和第3行分别定义了两个子Activity的请求码。n在代码的第16行和第23行以Sub-Activity的方式分别启动两个子Activity。n代码第2

31、9行是子Activity关闭后的返回值处理函数,其中requestCode是子Activity返回的请求码,与第2行和第3行定义的两个请求码相匹配;resultCode是结果码,n在代码第32行对结果码进行判断,如果等于RESULT_OK,在第35行代码获取子Activity返回值中的数据;data是返回值,子Activity需要返回的数据就保存在data中。6.1 Intent简介n6.1.2 获取Activity返回值q在父Activity中获取返回值nSubActivity1.java的核心代码如下:1.public class SubActivity1 extends Activity

32、 2.Override3.public void onCreate(Bundle savedInstanceState)4.super.onCreate(savedInstanceState);5.setContentView(R.layout.subactivity1);6.final EditText editText=(EditText)findViewById(R.id.edit);7.Button btnOK=(Button)findViewById(R.id.btn_ok);8.Button btnCancel=(Button)findViewById(R.id.btn_cance

33、l);9.10.btnOK.setOnClickListener(new OnClickListener()11.public void onClick(View view)12.String uriString=editText.getText().toString();13.Uri data=Uri.parse(uriString);14.Intent result=new Intent(null,data);15.setResult(RESULT_OK,result);16.finish();17.18.);19.20.btnCancel.setOnClickListener(new O

34、nClickListener()21.public void onClick(View view)22.setResult(RESULT_CANCELED,null);23.finish();24.25.);26.27.6.1 Intent简介n6.1.2 获取Activity返回值q在父Activity中获取返回值n代码第13行将EditText控件的内容作为数据保存在Uri中,并在第14行代码中构造Intent。n在第15行代码中,RESUIT_OK作为结果码,通过调用setResult()函数,将result设定为返回值。n最后在代码第16行调用finish()函数关闭当前的子Activ

35、ity6.1 Intent简介n6.1.2 获取Activity返回值q在父Activity中获取返回值nSubActivity2.java的核心代码:1.public class SubActivity2 extends Activity 2.Override3.public void onCreate(Bundle savedInstanceState)4.super.onCreate(savedInstanceState);5.setContentView(R.layout.subactivity2);6.7.Button btnReturn=(Button)findViewById(R

36、.id.btn_return);8.btnReturn.setOnClickListener(new OnClickListener()9.public void onClick(View view)10.setResult(RESULT_CANCELED,null);11.finish();12.13.);14.15.6.1 Intent简介n6.1.2 获取Activity返回值q在父Activity中获取返回值n在SubActivity2的代码中,第10行的setResult()函数仅设置了结果码,第2个参数为null,表示没有数据需要传递给父Activity。6.2 Intent过滤器

37、nIntent解析q隐式启动Activity时,并没有在Intent中指明Activity所在的类,因此,Android系统一定存在某种匹配机制,使Android系统能够根据Intent中的数据信息,找到需要启动的Activity。这种匹配机制是依靠Android系统中的Intent过滤器(Intent Filter)来实现的。6.2 Intent过滤器nIntent解析qIntent过滤器是一种根据Intent中的动作(Action)、类别(Categorie)和数据(Data)等内容,对适合接收该Intent的组件进行匹配和筛选的机制。Intent过滤器可以匹配数据类型、路径和协议,还可以

38、确定多个匹配项顺序的优先级(Priority)。应用程序的Activity、Service和BroadcastReceiver组件都可以注册Intent过滤器。这样,这些组件在特定的数据格式上则可以产生相应的动作。6.2 Intent过滤器nIntent解析q为了使组件能够注册Intent过滤器,通常在AndroidManifest.xml文件的各个组件下定义节点,然后在节点中声明该组件所支持的动作、执行的环境和数据格式等信息。当然,也可以在程序代码中动态地为组件设置Intent过滤器。节点支持标签、标签和标签,分别用来定义Intent过滤器的“动作”、“类别”和“数据”。节点支持的标签和属性

39、说明参考表 6.2 Intent过滤器标签标签属性属性说明说明android:name指定组件所能响应的动作,用字符串表示,通常由Java类名和包的完全限定名构成android:category指定以何种方式去服务Intent请求的动作Android:host指定一个有效的主机名android:mimetype指定组件能处理的数据类型android:path有效的URI路径名android:port主机的有效端口号android:scheme所需要的特定协议6.2 Intent过滤器nIntent解析q标签用来指定Intent过滤器的服务方式,每个Intent过滤器可以定义多个标签,程序开发人

40、员可以使用自定义的类别,或使用Android系统提供的类别。Android系统提供的类别可以参考表 6.2 Intent过滤器值值说明说明ALTERNATIVEIntent数据默认动作的一个可替换的执行方法SELECTED_ALTERNATIVE 和ALTERNATIVE类似,但替换的执行方法不是指定的,而是被解析出来的BROWSABLE声明Activity可以由浏览器启动DEFAULT为Intent过滤器中定义的数据提供默认动作HOME设备启动后显示的第一个ActivityLAUNCHER在应用程序启动时首先被显示6.2 Intent过滤器nIntent解析q这种Intent到Intent过

41、滤器的映射过程称为“Intent解析”。Intent解析可以在所有的组件中,找到一个可以与请求的Intent达成最佳匹配的Intent过滤器。Android系统中Intent解析的匹配规则如下:6.2 Intent过滤器nIntent解析q(1)Android系统把所有应用程序包中的Intent过滤器集合在一起,形成一个完整的Intent过滤器列表。q(2)在Intent与Intent过滤器进行匹配时,Android系统会将列表中所有Intent过滤器的“动作”和“类别”与Intent进行匹配,任何不匹配的Intent过滤器都将被过滤掉。没有指定“动作”的Intent过滤器可以匹配任何的Int

42、ent,但是没有指定“类别”的Intent过滤器只能匹配没有“类别”的Intent。q(3)把Intent数据Uri的每个子部与Intent过滤器的标签中的属性进行匹配,如果标签指定了协议、主机名、路径名或MIME类型,那么这些属性都要与Intent的Uri数据部分进行匹配,任何不匹配的Intent过滤器均被过滤掉。q(4)如果Intent过滤器的匹配结果多于一个,则可以根据在标签中定义的优先级标签来对Intent过滤器进行排序,优先级最高的Intent过滤器将被选择。qIntentResolutionDemo示例说明了如何在AndroidManifest.xml文件中注册Intent过滤器,

43、以及如何设置节点属性来捕获指定的Intent。6.2 Intent过滤器nIntent解析qAndroidManifest.xml的完整代码如下 1.2.6.7.9.10.11.12.13.14.16.17.18.19.20.21.22.23.24.6.2 Intent过滤器nIntent解析q在代码的第7行和第14行分别定义了两个Activity。第9行到第12行是第1个Activity的Intent过滤器,动作是android.intent.action.MAIN,类别是android.intent.category.LAUNCHER,由此可知,这个Activity是应用程序启动后显示的缺

44、省用户界面。q第16行到第20行是第2个Activity的Intent过滤器,过滤器的动作是android.intent.action.VIEW,表示根据Uri协议,以浏览的方式启动相应的Activity;类别是android.intent.category.DEFAULT,表示数据的默认动作;数据的协议部分是android:scheme=schemodemo,数据的主机名称部分是android:host=edu.hrbeu。6.2 Intent过滤器nIntent解析q在IntentResolutionDemo.java文件中,定义了一个Intent用来启动另一个Activity,这个Int

45、ent与Activity设置的Intent过滤器是完全匹配的。IntentResolutionDemo.java文件中Intent实例化和启动Activity的代码如下 1.Intent intent=new Intent(Intent.ACTION_VIEW,Uri.parse(schemodemo:/edu.hrbeu/path);2.startActivity(intent);6.2 Intent过滤器nIntent解析q代码第1行所定义的Intent,动作为Intent.ACTION_VIEW,与Intent过滤器的动作android.intent.action.VIEW匹配;qUri

46、是“schemodemo:/edu.hrbeu/path”,其中的协议部分为“schemodemo”,主机名部分为“edu.hrbeu”,也与Intent过滤器定义的数据要求完全匹配。q因此,代码第1行定义的Intent,在Android系统与Intent过滤器列表进行匹配时,会与AndroidManifest.xml文件中ActivityToStart定义的Intent过滤器完全匹配。6.2 Intent过滤器nAndroidManifest.xml文件中每个组件的都被解析成一个Intent过滤器对象。当应用程序安装到Android系统时,所有的组件和Intent过滤器都会注册到Androi

47、d系统中。n这样,Android系统便可以将任何一个Intent请求通过Intent过滤器映射到相应的组件上。6.3 广播消息n广播消息qIntent的另一种用途是发送广播消息,应用程序和Android系统都可以使用Intent发送广播消息,广播消息的内容可以与应用程序密切相关的数据信息,也可以Android的系统信息,例如网络连接变化、电池电量变化、接收到短信或系统设置变化等。q如果应用程序注册了BroadcastReceiver,则可以接收到指定的广播消息。q使用Intent发送广播消息非常简单,只需创建一个Intent,并调用sendBroadcast()函数就可把Intent携带的信息

48、广播出去。q但需要注意的是,在构造Intent时必须定义一个全局唯一的字符串,用来标识其要执行的动作,通常使用应用程序包的名称。q如果要在Intent传递额外数据,可以用Intent的putExtra()方法。下面的代码构造用于广播消息的Intent,并添加了额外的数据,然后调用sendBroadcast()发送广播消息:6.3 广播消息nsendBroadcast()代码nBroadcastReceiver用于监听广播消息,可以在AndroidManifest.xml文件或在代码中注册一个BroadcastReceiver,并使用Intent过滤器指定要处理的广播消息。1.String UN

49、IQUE_STRING=edu.hrbeu.BroadcastReceiverDemo;2.Intent intent=new Intent(UNIQUE_STRING);3.intent.putExtra(key1,value1);4.intent.putExtra(key2,value2);5.sendBroadcast(intent);6.3 广播消息nonReceive()方法q创建BroadcastReceiver需继承BroadcastReceiver类,并重载onReceive()方法。示例代码如下:q当Android系统接收到与注册BroadcastReceiver匹配的广播消

50、息时,Android系统会自动调用这个BroadcastReceiver接收广播消息。在BroadcastReceiver接收到与之匹配的广播消息后,onReceive()方法会被调用,但onReceive()方法必须要在5秒钟执行完毕,否则Android系统会认为该组件失去响应,并提示用户强行关闭该组件。1.public class MyBroadcastReceiver extends BroadcastReceiver 2.Override3.public void onReceive(Context context,Intent intent)4./TODO:React to the

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁