- 浏览: 977596 次
- 性别:
- 来自: 深圳
博客专栏
-
飞雪的Android学习总...
浏览量:146048
文章分类
最新评论
-
lovebingheji:
感谢,看完了
Spring方法注入 -
ruijin5566:
package concurrent;
import ja ...
淘宝面试题:如何充分利用多核CPU,计算很大的List中所有整数的和 -
helonghui:
Nginx在高并发的时候,内存开销比Apache更加有优势!
使用Nginx搭建PHP服务器 -
xjgpeople:
不错,写的非常不错
基于Android的浮动组件,可以用于应用中的新功能展示等等。 -
Bj_junxia:
不允许加入了,呜呜呜。。。。
Android系列教程之五:Activity的生命周期
接上节继续。。版权所有:飞雪无情,转载请注明出处:http://flysnow.iteye.com/blog/965527
Android开发技术交流群86686524 120059404
Android系列教程目录:
-
Android教程之一:Window下搭建Android开发环境
-
Android教程之二:Linux下搭建Android开发环境
-
Android教程之三:第一个Android应用,HelloWorld
-
Android系列教程之四:Android项目的目录结构
-
Android系列教程之五:Activity的生命周期
-
Android系列教程之六:TextView小组件的使用--附带超链接和跑马灯效果
-
Android系列教程之七:EditText使用详解-包含很多教程上看不到的功能演示
-
Android系列教程之八:ListView组件的使用
-
Android系列教程之九:GridView组件的使用
-
Android系列教程之十:Intents and Intent Filters(一)
Category(类别)检测
类别在<intent-filter>中是通过<category>标记定义的,Category和Action一样,他们的名字都是一个字符串定义,但是我们在代码中可以使用对应的类别常量,在xml文件定义中只能使用定义好的字符串。Android的Intent类中提供了很多内置的类别定义,一中类别代表一个意思,可以参考说明使用。。比如android.intent.category.LAUNCHER标表示你的应用会展示在启动列表页面,经常和android.intent.action.MAIN搭配使用
下面通过一个例子来说明Category的检测,项目名为Intents,应用名为Intents and Filters,运行在Android2.2版本上.主启动Activity为IntentsTestList。
-
IntentsTestList代码如下:
/** * Intents测试列表类 * @author 飞雪无情 * @since 2011-3-14 */ public class IntentsTestList extends ListActivity { private String ACTION_VIEW="com.flysnow.intent.ACTION_VIEW"; private String CATEGORY_MAN="com.flysnow.intent.CATEGORY_MAN"; private String CATEGORY_SHOP="com.flysnow.intent.CATEGORY_SHOP"; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //定义ListAdapter setListAdapter(new SimpleAdapter(this, getData(), android.R.layout.simple_list_item_1, new String[] { "title" },new int[] {android.R.id.text1})); getListView().setTextFilterEnabled(true); filter.addCategory(CATEGORY_MAN); //注册一个广播 super.registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "该Broadcast的Intent Filter设置了Category和Action", Toast.LENGTH_SHORT).show(); } },filter); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { Intent intent=(Intent)getData().get(position).get("intent"); Boolean isActivity=(Boolean)getData().get(position).get("isActivity"); if(isActivity){ startActivity(intent); }else{ sendBroadcast(intent); } } /** * 返回ListView需要的数据 * @return ListView需要的数据 */ private List<Map<String,Object>> getData() { List<Map<String,Object>> data=new ArrayList<Map<String,Object>>(); addItem(data, "1个Category检测-Activity", new Intent(ACTION_VIEW).addCategory(CATEGORY_MAN),true); addItem(data, "1个Category检测-Broadcast", new Intent(ACTION_VIEW).addCategory(CATEGORY_MAN),false); addItem(data, "2个Category检测-Activity", new Intent(ACTION_VIEW).addCategory(CATEGORY_MAN).addCategory(CATEGORY_SHOP),true); return data; } /** * 给ListView添加数据 * @param data 存储数据的List * @param name 要显示的Title * @param intent 单击某一项时要启动的Activity * @param isActivity 启动的是否是Activity,true是,false为广播 */ private void addItem(List<Map<String,Object>> data, String name, Intent intent,boolean isActivity) { Map<String, Object> temp = new HashMap<String, Object>(); temp.put("title", name); temp.put("intent", intent); temp.put("isActivity", isActivity); data.add(temp); } private IntentFilter filter=new IntentFilter(ACTION_VIEW); }
以上代码主要是一个ListView,列出了三个测试项,1个Category的测试和2个Category的测试,注册了一个广播. -
为了测试新建了2个Activity,分别是CategoryActivity和Category2Activity,代码如下:
/** * @author 飞雪无情 * @since 2011-3-14 */ public class CategoryActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView text=new TextView(this); text.setText("该Activity的Intent Filter值设置了Action和1个Category,不包含android.intent.category.DEFAULT"); setContentView(text); } }
/** * @author 飞雪无情 * @since 2011-3-14 */ public class Category2Activity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView text=new TextView(this); text.setText("该Activity的Intent Filter值设置了Action和2个Category,不包含android.intent.category.DEFAULT"); setContentView(text); } }
很简单只是一段文字的说明 -
AndroidManiftest.xml修改如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.flysnow.intent" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".IntentsTestList" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".CategoryActivity" android:label="1个Category检测"> <intent-filter> <action android:name="com.flysnow.intent.ACTION_VIEW"></action> <category android:name="android.intent.category.DEFAULT"></category> <category android:name="com.flysnow.intent.CATEGORY_MAN"></category> </intent-filter> </activity> <activity android:name=".Category2Activity" android:label="2个Category检测"> <intent-filter> <action android:name="com.flysnow.intent.ACTION_VIEW"></action> <category android:name="android.intent.category.DEFAULT"></category> <category android:name="com.flysnow.intent.CATEGORY_MAN"></category> <category android:name="com.flysnow.intent.CATEGORY_SHOP"></category> </intent-filter> </activity> </application> </manifest>
为CategoryActivity添加了2个Category,一个是默认的(隐式Intent必须),一个是自定义的。而相应的Category2Activity则有三个Category。 -
我们运行测试,效果图如下:
当点击“1个Category检测-Activity”的时候,会弹出
这是,因为我们的Intent定义了一个Category,这个Category在CategoryActivity和Category2Activity里都有,都能匹配上,所以就会弹出这两个Activity供我们选择,而当我们单击《2个Category检测-Activity》的时候就会直接打开Category2Activity,这是因为这个选项里的Intent有2个Category,只有Category2Activity才能匹配上。。。通过例子我们可以总结到:Intent中所包含的所有Category必须在一个组件的intent-filter中有定义,一个都不能少,否则不能通过检测。。但是intent-filter的可以有额外的Category .再次提醒: Android对所有传递给 Context.startActivity()的隐式intent至少包含"android.intent.category.DEFAULT"
未完待续
评论
6 楼
飞雪无情
2013-02-06
liruikqn 写道
干嘛用这么麻烦的代码,还扯到LISTVIEW,对初学者来说不好懂。你是在故弄玄虚么。。。
:-),如果一节节的看的话,相信读者已经看过ListView的使用了,在第八节里。这里ListView是为了展示方便。就像APiDemo一样,每一个功能的演示都是ListView列表的哦
5 楼
liruikqn
2013-02-05
干嘛用这么麻烦的代码,还扯到LISTVIEW,对初学者来说不好懂。你是在故弄玄虚么。。。
4 楼
a1241312
2012-11-23
问个问题哈,就是登录后进入主界面,然后我点击程序图标,还得登录,如果解决这个问题啊。
3 楼
a1241312
2012-11-23
不错,写的狠详细。
2 楼
飞雪无情
2011-06-15
banlalaotou 写道
我感觉代码再简单一些,对于初学者来说效果会更好。
已经很简单了。呵呵
1 楼
banlalaotou
2011-06-15
我感觉代码再简单一些,对于初学者来说效果会更好。
发表评论
-
android新建大分辨率模拟器不能启动的问题
2015-03-08 17:36 0新建的Android模拟器的分辨率超过一定大小的时候,就无法启 ... -
android覆盖式引导
2015-03-08 17:35 0我们在开发产品的时 ... -
Android产品开发中常用的一些开源项目
2015-03-08 17:27 2220你在工作中可能会遇到同时给你说不要重复发明轮子,其实这个说的 ... -
Android HttpClient Session保持
2015-03-08 17:20 14541现在单机版本的App已经 ... -
java.lang.UnsupportedOperationException android.view.GLES20Canvas.clipPath
2015-03-08 17:18 2106今天自定义控件使用Canvas绘图的时候遇到的这个错误,看错 ... -
解决Android SDK Manager不能更新的问题
2015-03-08 17:16 3225今天打算更新到Android4.3,看看里面的新的API,D ... -
PenddingIntent.getActivity
2013-03-11 16:40 0PenddingIntent.getActivity -
关于Android的Holo主题
2013-02-22 23:47 8144Android曾经为了优化用户体验,把原生的 ... -
Android Layout布局文件里的android:layout_height等属性为什么会不起作用?
2013-01-29 00:19 20579有的时候,我们配置好的布局文件,在加载完成添加到我们 ... -
震动反馈
2013-01-10 20:58 0震动反馈 -
Android ViewGroup.setDescendantFocusability函数
2013-01-05 12:15 22456这个函数是在ViewGroup里定义的,主要用于控制child ... -
Android设计应用图标不用愁---Asset Studio Integration来帮你
2011-11-12 00:18 8201Android Asset StudioWeb版是 ... -
最新最全的Android4.0 API源代码下载和完整Android4.0源代码下载教程
2011-11-15 09:41 2311这时刚刚整理好的最新的,包含所有的API的源代码,第一次上传的 ... -
基于Android的浮动组件,可以用于应用中的新功能展示等等。
2011-12-10 17:12 4697前言 在开发Android应用时,加新功能是必不可少 ... -
提取出的最新Android4.0 API 源代码
2011-11-15 14:06 4050提取出的Android4.0 API 的源代码,也就是andr ... -
Android中我为什么发不了邮件--Android邮件发送详解
2011-07-19 22:50 15665版权所有@飞雪无情,转载请著名出处:http:/ ... -
Android Developer和Google Group可以正常访问了
2011-06-21 08:56 2393Android Developer和Google Group可 ... -
Android中关于线程使用的几点注意事项
2011-05-21 22:43 8725版权所有:飞雪无情 ... -
Android系列教程之十二:Intents and Intent Filters(三)
2011-03-29 10:02 12950接上节继续。。版权所有:飞雪无情,转载请注明出处: ... -
android.resource://这个Uri你知道吗
2011-03-28 11:22 10269转自:http://www.android123.com.cn ...
相关推荐
本教程将深入讲解Intent和Intent Filters,特别是如何利用它们进行数据检测。 在Intent Filter中,`<data>`标签用于定义Intent可以携带的数据类型和URI。例如,以下是一个简单的Intent Filter配置: ```xml ...
Android Intents and Intent Filters(一) 对应博客地址:http://blog.csdn.net/michael__li/article/details/6947545
Android Intents and Intent Filters(二)源代码 对应博客 http://blog.csdn.net/michael__li/article/details/6950127
内含四个pdf文件,分别为 Intent and Intent-filter Intents and Intent Filters理论英文 Intents and Intent Filters理论中文 Intent入门指南 详尽介绍关于android intent
### Android开发之旅:深入理解Intents与Intent Filters 在Android开发中,`Intents`与`Intent Filters`是实现组件间通信的关键技术。通过这两项技术,开发者可以让应用程序中的不同组件,甚至不同的应用程序之间...
Android开发之旅:环境搭建及HelloWorld 1 Android开发之旅:HelloWorld项目的目录结构 2 Android开发之旅:android架构 3 Android开发之旅:应用程序...Android开发之旅 Intents和Intent Filters(实例部分) 17
在Android开发环境中,Intent是应用间通信的重要工具,它用于启动其他组件或传递数据。本实验将深入探讨Android Studio中Intent的使用,帮助你更好地理解如何在不同的Activity之间跳转和传递信息。 首先,让我们...
### 学习Android Intents:理解与应用Intents的力量 #### 概述 在深入学习Android Intents之前,我们先来了解下什么是Intents以及它在Android开发中的重要性。Intents是Android平台中用于应用程序间通信的核心机制...
Intent 在 Android 开发中扮演着至关重要的角色,它是应用程序组件间通信的关键机制,使得组件之间可以实现松散耦合的交互。Intent 不仅仅用于启动另一个 Activity,还可以启动 Service 或触发 Broadcast Receiver。...
Chapter 1 Android Overview Android Overview History Android Versions Android Flavors Summary Chapter 2 Java Review Comments Data Types: Primitives and Objects Modifiers Arrays Operators Control Flow ...
#### 二、Intents与Intent Filters概述 在Android应用中,Intents是一种消息对象,用于请求系统执行某个动作或者启动另一个组件。而Intent Filters则是在AndroidManifest.xml文件中定义的一种规则,用来声明组件...
Chapter 4: Intents and Services Chapter 5: Storing and Retrieving Data Chapter 6: Networking Chapter 7: Telephony Chapter 8: Notification and Alarms Chapter 9: Graphics and Animation Chapter 10: ...
Android Intent 跳转到系统应用中的拨号界面、联系人界面、短信界面 在 Android 开发中,Intent 是一个非常重要的概念,它允许不同的应用程序之间进行交互和通信。在本文中,我们将探讨如何使用 Intent 跳转到系统...
根据 Marty Hall 所提供的培训资料,我们可以了解到 Android 设计的核心理念之一是将应用程序分解为一系列小型的、单屏幕的组件,这些组件被称为 Activities。这种设计理念旨在简化应用的开发过程,并提高用户体验。...
在Android开发中,Intent是应用程序之间以及应用程序内部组件之间通信的主要机制。Intent可以用来启动新的活动(Activity)、启动服务(Service)或者传递消息。在这个场景中,我们将关注Intent如何用于在Android...
Creating Intent Filters and Broadcast Receivers Chapter 6: Using Internet Resources Downloading and Parsing Internet Resources Using the Download Manager Using Internet Services Connecting to Google ...
在Android应用开发中,测试是确保产品质量的关键环节。Espresso是一个强大的UI测试框架,它使得开发者可以编写直接、简洁的测试代码,以验证用户界面的行为。本篇文章将深入探讨Espresso如何与Intent和Webview协同...