技术改变世界 阅读塑造人生! - shaogx.com

This string was altered by TechBlog\Plugins\Example.; This is an example to show the potential of an offcanvas layout pattern in Bootstrap. Try some responsive-range viewport sizes to see it in action.

Android开发者必知的开发资源

随着Android平台市场份额的持续猛增 ,越来越多的开发者开始投入Android应用程序的开发大潮。如果您是一位2013年刚刚入行的Android开发新兵,恭喜你,因为这个平台已经在过去几年里变得愈发成熟了,绝对值得住你全情投入。目前来看,Android现成的开发资源早已经汗牛充栋,我们这篇帖子,就是要在浩如烟海的资源中挑出最重要的那些,呈现给你。本帖对Android开发菜鸟和中级老兵同样适用,因为本帖重点列出了那些最常用的Android开发资源。... 全文

Android开发资源 Android开发学习 Android开发

Android开发学习之微信公众号界面

            接着上一篇博客中的卡片式设计,我们继续从微信中寻找一些线索,我们首先来看这样一个界面,这是微信中默认的一个公众号,主要是发布腾讯新闻上的最新动态,我们可以看出,它采用了类似于我们在上一篇文章中采用的卡片式布局。那么,今天就让我们一起来做这样一个界面吧!           第一步,当然是创建layout_item的布局,即列表项目的布局,这里直接给出布局代码,代码并不复杂,只是属性设置较为繁琐。... 全文

微信 Android应用开发 android应用 android开发 android

Android开发学习笔记:我的第一个Android程序

对编程的人来说,HelloWorld是再熟悉不过的了,它是学开发语言入门的第一个程序,我现在使用Eclipse ADT插件,创建我的一个Android的程序,步骤如下:1.启动Eclipse,选择File--New弹出下面的对话框2.在弹出的对话框中选择“Android Project”弹出下面的对话框 ... 全文

程序 HelloWorld Android 移动开发 Android开发

Android开发学习之使用ViewPager+PagerTabStrip制作可滑动的Tab

            在昨天的文章中,我们使用ViewPager制作了一个简单的滑动切换的例子。今天让我们在昨天的基础之上,利用ViewPager来制作一个可以滑动的Tab。要实现这样的功能,除了ViewPager外,我们还需要一个PagerTabStrip来配合使用。简单说一下PagerTabStrip,Google官方描述为:PagerTabStrip是当前,未来和以前的页面的交互指标ViewPager。它旨在用作ViewPager插件在XML布局的子图。添加为ViewPager的孩子在你的布局文件,并设置其Android:layout_gravity到顶部或底部的钉选到ViewPager的顶部或底部。从每个页面的标题是由方法提供 getPageTitle(INT)在提供给ViewPager的适配器。这段话的大致意思就是说,PagerTabStrip是一个ViewPager的子控件,不能单独使用。通过layout_gravity属性来控制它显示的位置。使用getPageTitle()方法返回页面的标题。通过对这段话的理解我们可以设计出下面的布局代码:... 全文

viewpager Android应用开发 android开发 android应用 安卓

Android开发第一步:认识Android

什么是Android?Android是一个移动设备的软件套件,它包括一个操作系统、中间件和关键应用。Android SDK提供必需的工具和API,并基于java语言开发。... 全文

Android开发 Android 认识Android

如何定位Android NDK开发中遇到的错误

Android NDK是什么?Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK”。众所周知,Android程序运行在Dalvik虚拟机中,NDK允许用户使用类似C / C++之类的原生代码语言执行部分程序。NDK包括:从C / C++生成原生代码库所需要的工具和build files;将一致的原生库嵌入可以在Android设备上部署的应用程序包文件(application packages files ,即.apk文件)中;支持所有未来Android平台的一系列原生系统头文件和库。为何要用到NDK?概括来说主要分为以下几种情况:... 全文

android ndk android开发 android平台 移动应用开发 自动化测试 操作系统 应用程序 编程语言 Testin

牛:Android开发99%Bug修复方法

以下仅支持4.0.3或之后的设备(写在前面,这个教程需要安装两个app,且卸载后无法达到效果,所以有app drawer洁癖者慎重(你可以把它们隐藏起来么)。当然等官方rom更新或者安装最新三方rom才是终极解决方法,当你更新之后这些东西就可以全部扔掉了)关于如何给手机打上Master Key Bug和第二个apk签名的补丁的教程:1.确认自己手机已经root了,如果不想root只能等rom更新了2.确认自己的设备有这个bug,在Play里搜索Bluebox Security Scanner安装就可以知道这两个补丁有没有安装上... 全文

Android开发Bug修复 Amdroid开发学习 Android开发Bug修复方法

Android开发

    首先,需要向Android模拟器的SD卡写入文件,就需要获得权限,所以需要在AndroidManifest.xml文件中注册权限,使用的方法是: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>这个例子的作用是点击第一个按钮把图像文件存储到SD卡中,点击第二个按钮利用下面的ImageView显示Sd卡中的内容,本示例的截图如下:使用的源代码如下:... 全文

Android开发 android开发

Android开发

    Android 平台提供了两类动画。 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转、平移、放缩和渐变)。 下面就讲一下Tweene Animations。 主要类:Animation  动画AlphaAnimation 渐变透明度RotateAnimation 画面旋转ScaleAnimation 渐变尺寸缩放TranslateAnimation 位置移动... 全文

Android开发 android开发

Android开发

       我们通常会觉得系统给出的按钮不够美观,这时,我们可以自己定义一个按钮,已达到自己的需求,在这里实现一个圆角按钮。需要在drawable文件夹下新建一个xml文件,并以shape为根标签,利用如下的shape即可实现需求:... 全文

Android开发 android开发

Android开发

    我们经常看到应用程序的设置页面,一般用到设置页面时,我们会继承自PreferenceActivity,它实现了SharedPreference,并生成相应的XML文件自动保存用户的设置,在设置页面中,每一个列表项都是一个Preference,如果要实现点击某一项有所反应,就需要实现OnPreferenceChangeListener接口,并使得某一个Preference绑定一个监听器,下面的截图是作者实现的一个设置界面:实现这个界面的XML文件如下:... 全文

Android开发 android开发

Android开发

      ContentProvider是Android四大组件之一,所以如果是自己实现ContentProvider,需要在AndroidManifest.xml文件中进行声明,幸运的是,我们很少需要自己定义实现它,一般我们的开发只需要用到系统自己提供的ContentProvider,使用起来非常方便。首先来让我们认识ContentProvider:基本概念:1.ContentProvider提供为存储和获取数据提供了统一的接口2.使用ContentProvider可以在不同的应用程序之间共享数据3.Android为常见的一些数据提供了ContentProvider 下面我开始介绍实现ContentProvider的过程:... 全文

Android开发 android开发

Android开发

使用XML来定义Tween Animation动画的XML文件在工程中res/anim目录,这个文件必须包含一个根元素,可以使<alpha><scale> <translate> <rotate>插值元素或者是把上面的元素都放入<set>元素组中,默认情况下,所以的动画指令都是同时发生的,为了让他们按序列发生,需要设置一个特殊的属性startOffset。动画的指令定义了你想要发生什么样的转换,当他们发生了,应该执行多长时间,转换可以是连续的也可以使同时的。例如,你让文本内容从左边移动到右边,然后旋转180度,或者在移动的过程中同时旋转,没个转换需要设置一些特殊的参数(开始和结束的大小尺寸的大小变化,开始和结束的旋转角度等等,也可以设置些基本的参数(例如,开始时间与周期),如果让几个转换同时发生,可以给它们设置相同的开始时间,如果按序列的话,计算开始时间加上其周期。... 全文

Android开发 android开发

Android开发

通常与服务器建立连接有两种方法,Get和Post方法,下面就对这两个方法进行介绍。无论是使用HttpGet,还是使用HttpPost,都必须通过如下3步来访问HTTP资源。1.创建HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。2.使用DefaultHttpClient类的execute方法发送HTTP GET或HTTP POST请求,并返回HttpResponse对象。3.通过HttpResponse接口的getEntity方法返回响应信息,并进行相应的处理。... 全文

Android开发 android开发

Android开发

     MediaPlayer用于播放音频文件,它的使用非常简单,使用这个类播放音频文件有两种方法,下面就这两种方法分别进行介绍。一,使用构造函数可以使用直接new的方式:MediaPlayer mp = new MediaPlayer();也可以使用create的方式,如:MediaPlayer mp = MediaPlayer.create(this, R.raw.test);此时就完成了mp的初始化二,使用setDataSource存储在SD卡或其他文件路径下的媒体文件例如:mp.setDataSource("/sdcard/test.mp3");网络上的媒体文件... 全文

Android开发 android开发

Android开发

在执行解析数据之前,需要将一个类库应用到你的程序中,下载的地址是:http://code.google.com/p/google-gson/ 下载解压之后你需要将蓝色标记的文件放入到你的程序之中应用首先,我们需要知道什么是Json数据:... 全文

Android开发 android开发

Android开发精要3

1、概述一个应用程序的三个核心组件——activities、services、broadcast receivers,都是通过叫做intents的消息激活。Intent消息是一种同一或不同应用程序中的组件之间延迟运行时绑定的机制。intent本身(是一个Intent对象),是一个被动的数据结构保存一个将要执行的操作的抽象描述,或在广播的情况下,通常是某事已经发生且正在宣告。对于这三种组件,有独立的传送intent的机制:·        Activity:一个intent对象传递给Context.startActivity()或Activity.startActivityForRestult()去启动一个活动或使一个已存在的活动去做新的事情。·        Service:一个intent对象传递给Context.startService()去初始化一个service或传递一个新的指令给正在运行的service。类似的,一个intent可以传递给Context.bindService()去建立调用组件和目标服务之间的连接。·        Broadcast Receiver:一个intent对象传递给任何广播方法(如Context.sendBroadcast(),Context.sendOrderedBroadcast(),Context.sendStickyBroadcast()),都将传递到所有感兴趣的广播接收者。 在每种情况下,Android系统查找合适的activity、service、broadcastreceivers来响应意图,如果有必要的话,初始化他们。这些消息系统之间没有重叠,即广播意图仅会传递给广播接收者,而不会传递活动或服务,反之亦然。下面首先描述intent对象,然后介绍Android将intent映射到相应组件的规则——如何解决哪个组件应该接收intent消息。对于没有指定目标组件名字的intent,这个处理过程包括按照intent filters匹配每个潜在的目标对象。2、Intent对象一个Intent对象是一个捆信息,包含对intent有兴趣的组件的信息(如要执行的动作和要作用的数据)、Android系统有兴趣的信息(如处理intent组件的分类信息和如何启动目标活动的指令)。下面列出它的主要信息:2.1、组件名字处理intent的组件的名字。这个字段是一个ComponentName对象——是目标组件的完全限定类名(如"com.example.project.app.FreneticActivity")和应用程序所在的包在清单文件中的名字(如"com.example.project")的组合。其中组件名字中的包部分不必一定和清单文件中的包名一样。组件名字是可选的,如果设置了,intent对象传递到指定类的实例;如果没有设置,Android使用intent中的其它信息来定位合适的目标组件(见下面的Intent解析)。组件的名字通过setComponent(),setClass()或setClassName()设置,通过getComponent()读取。2.2、动作一个字符串命名的动作将被执行,或在广播intent中,已发生动作且正被报告。Intent类定义了一些动作常量,如下:  Constant    Target component    Action    ACTION_CALL    activity    Initiate a phone  call.     ACTION_EDIT    activity    Display data for  the user to edit.     ACTION_MAIN    activity    Start up as the  initial activity of a task, with no data input and no returned output.     ACTION_SYNC    activity    Synchronize data  on a server with data on the mobile device.     ACTION_BATTERY_LOW    broadcast  receiver     A warning that  the battery is low.     ACTION_HEADSET_PLUG    broadcast  receiver     A headset has  been plugged into the device, or unplugged from it.     ACTION_SCREEN_ON    broadcast  receiver     The screen has  been turned on.     ACTION_TIMEZONE_CHANGED    broadcast  receiver     The setting for  the time zone has changed.   查看更多的动作请参考Intent类。其它的动作定义在Android API中,我们还可以定义自己的动作字符串一再我们的应用程序中激活组件。自定义动作字符串应该包含应用程序报名前缀,如"com.example.project.SHOW_COLOR"。动作很大程度上决定了剩下的intent如何构建,特别是数据(data)和附加(extras)字段,就像一个方法名决定了参数和返回值。正是这个原因,应该尽可能明确指定动作,并紧密关联到其它intent字段。换句话说,应该定义你的组件能够处理的Intent对象的整个协议,而不仅仅是单独地定义一个动作。一个intent对象的动作通过setAction()方法设置,通过getAction()方法读取。2.3、数据数据(data)是将作用于其上的数据的URI和数据的MIME类型。不同的动作有不同的数据规格。例如,如果动作字段是ACTION_EDIT,数据字段将包含将显示用于编辑的文档的URI;如果动作是ACTION_CALL,数据字段将是一个tel:URI和将拨打的号码;如果动作是ACTION_VIEW,数据字段是一个http:URI,接收活动将被调用去下载和显示URI指向的数据。当匹配一个intent到一个能够处理数据的组件,通常知道数据的类型(它的MIME类型)和它的URI很重要。例如,一个组件能够显示图像数据,不应该被调用去播放一个音频文件。在许多情况下,数据类型能够从URI中推测,特别是content:URIs,它表示位于设备上的数据且被内容提供者(content provider)控制。但是类型也能够显示地设置,setData()方法指定数据的URI,setType()指定MIME类型,setDataAndType()指定数据的URI和MIME类型。通过getData()读取URI,getType()读取类型。2.4、种类此外,还包含关于应该处理intent的组件类型信息。可以在一个Intent对象中指定任意数量的种类描述。Intent类定义的一些种类常量,如下这些:  Constant    Meaning    CATEGORY_BROWSABLE    The target  activity can be safely invoked by the browser to display data referenced by a  link — for example, an image or an e-mail message.     CATEGORY_GADGET    The activity can  be embedded inside of another activity that hosts gadgets.     CATEGORY_HOME    The activity  displays the home screen, the first screen the user sees when the device is  turned on or when the HOME key is pressed.     CATEGORY_LAUNCHER    The activity can  be the initial activity of a task and is listed in the top-level application  launcher.     CATEGORY_PREFERENCE    The target  activity is a preference panel.   更多的种类常量请参考Intent类。addCategory()方法添加一个种类到Intent对象中,removeCategory()方法删除一个之前添加的种类,getCategories()方法获取Intent对象中的所有种类。2.5、附加信息额外的键值对信息应该传递到组件处理intent。就像动作关联的特定种类的数据URIs,也关联到某些特定的附加信息。例如,一个ACTION_TIMEZONE_CHANGEintent有一个"time-zone"的附加信息,标识新的时区,ACTION_HEADSET_PLUG有一个"state"附加信息,标识头部现在是否塞满或未塞满;有一个"name"附加信息,标识头部的类型。如果你自定义了一个SHOW_COLOR动作,颜色值将可以设置在附加的键值对中。Intent对象有一系列的put…()方法用于插入各种附加数据和一系列的get…()用于读取数据。这些方法与Bundle对象的方法类似,实际上,附加信息可以作为一个Bundle使用putExtras()和getExtras()安装和读取。2.6、标志有各种各样的标志,许多指示Android系统如何去启动一个活动(例如,活动应该属于那个任务)和启动之后如何对待它(例如,它是否属于最近的活动列表)。所有这些标志都定义在Intent类中。3、Intent解析Intent可以分为两组:·        显式intent:通过名字指定目标组件。因为开发者通常不知道其它应用程序的组件名字,显式intent通常用于应用程序内部消息,如一个活动启动从属的服务或启动一个姐妹活动。·        隐式intent:并不指定目标的名字(组件名字字段是空的)。隐式intent经常用于激活其它应用程序中的组件。Android传递一个显式intent到一个指定目标类的实例。Intent对象中只用组件名字内容去决定哪个组件应该获得这个intent,而不用其他内容。隐式intent需要另外一种不同的策略。由于缺省指定目标,Android系统必须查找一个最适合的组件(一些组件)去处理intent——一个活动或服务去执行请求动作,或一组广播接收者去响应广播声明。这是通过比较Intent对象的内容和intent过滤器(intentfilters)来完成的。intent过滤器关联到潜在的接收intent的组件。过滤器声明组件的能力和界定它能处理的intents,它们打开组件接收声明的intent类型的隐式intents。如果一个组件没有任何intent过滤器,它仅能接收显示的intents,而声明了intent过滤器的组件可以接收显示和隐式的intents。只有当一个Intent对象的下面三个方面都符合一个intent过滤器:action、data(包括URI和数据类型)、category,才被考虑。附加信息和标志在解析哪个组件接收intent中不起作用。3.1、Intent过滤器活动、服务、广播接收者为了告知系统能够处理哪些隐式intent,它们可以有一个或多个intent过滤器。每个过滤器描述组件的一种能力,即乐意接收的一组intent。实际上,它筛掉不想要的intents,也仅仅是不想要的隐式intents。一个显式intent总是能够传递到它的目标组件,不管它包含什么;不考虑过滤器。但是一个隐式intent,仅当它能够通过组件的过滤器之一才能够传递给它。一个组件的能够做的每一工作有独立的过滤器。例如,记事本中的NoteEditer活动有两个过滤器,一个是启动一个指定的记录,用户可以查看和编辑;另一个是启动一个新的、空的记录,用户能够填充并保存。一个intent过滤器是一个IntentFilter类的实例。因为Android系统在启动一个组件之前必须知道它的能力,但是intent过滤器通常不在java代码中设置,而是在应用程序的清单文件(AndroidManifest.xml)中以<intent-filter>元素设置。但有一个例外,广播接收者的过滤器通过调用Context.registerReceiver()动态地注册,它直接创建一个IntentFilter对象。一个过滤器有对应于Intent对象的动作、数据、种类的字段。过滤器要检测隐式intent的所有这三个字段,其中任何一个失败,Android系统都不会传递intent给组件。然而,因为一个组件可以有多个intent过滤器,一个intent通不过组件的过滤器检测,其它的过滤器可能通过检测。3.1.1、动作检测清单文件中的<intent-filter>元素以<action>子元素列出动作,例如:<intent-filter . . . >    <action android:name="com.example.project.SHOW_CURRENT" />    <action android:name="com.example.project.SHOW_RECENT" />    <action android:name="com.example.project.SHOW_PENDING" />    .. .</intent-filter>像例子所展示,虽然一个Intent对象仅是单个动作,但是一个过滤器可以列出不止一个。这个列表不能够为空,一个过滤器必须至少包含一个<action>子元素,否则它将阻塞所有的intents。要通过检测,Intent对象中指定的动作必须匹配过滤器的动作列表中的一个。如果对象或过滤器没有指定一个动作,结果将如下:·        如果过滤器没有指定动作,没有一个Intent将匹配,所有的intent将检测失败,即没有intent能够通过过滤器。·        如果Intent对象没有指定动作,将自动通过检查(只要过滤器至少有一个过滤器,否则就是上面的情况了)3.1.2、种类检测类似的,清单文件中的<intent-filter>元素以<category>子元素列出种类,例如:<intent-filter . . . >    <category android:name="android.intent.category.DEFAULT" />    <category android:name="android.intent.category.BROWSABLE" />    .. .</intent-filter>注意本文前面两个表格列举的动作和种类常量不在清单文件中使用,而是使用全字符串值。例如,例子中所示的"android.intent.category.BROWSABLE"字符串对应于本文前面提到的BROWSABLE常量。类似的,"android.intent.action.EDIT"字符串对应于ACTION_EDIT常量。对于一个intent要通过种类检测,intent对象中的每个种类必须匹配过滤器中的一个。即过滤器能够列出额外的种类,但是intent对象中的种类都必须能够在过滤器中找到,只有一个种类在过滤器列表中没有,就算种类检测失败!因此,原则上如果一个intent对象中没有种类(即种类字段为空)应该总是通过种类测试,而不管过滤器中有什么种类。但是有个例外,Android对待所有传递给Context.startActivity()的隐式intent好像它们至少包含"android.intent.category.DEFAULT"(对应CATEGORY_DEFAULT常量)。因此,活动想要接收隐式intent必须要在intent过滤器中包含"android.intent.category.DEFAULT"。注意:"android.intent.action.MAIN"和 "android.intent.category.LAUNCHER"设置,它们分别标记活动开始新的任务和带到启动列表界面。它们可以包含"android.intent.category.DEFAULT"到种类列表,也可以不包含。3.1.3、数据检测类似的,清单文件中的<intent-filter>元素以<data>子元素列出数据,例如:<intent-filter . . . >    <data android:mimeType="video/mpeg" android:scheme="http" . . . />    <data android:mimeType="audio/mpeg" android:scheme="http" . . . />    . . .</intent-filter>每个<data>元素指定一个URI和数据类型(MIME类型)。它有四个属性scheme、host、port、path对应于URI的每个部分: scheme://host:port/path 例如,下面的URI:  content://com.example.project:200/folder/subfolder/etc scheme是content,host是"com.example.project",port是200,path是"folder/subfolder/etc"。host和port一起构成URI的凭据(authority),如果host没有指定,port也被忽略。 这四个属性都是可选的,但它们之间并不都是完全独立的。要让authority有意义,scheme必须也要指定。要让path有意义,scheme和authority也都必须要指定。当比较intent对象和过滤器的URI时,仅仅比较过滤器中出现的URI属性。例如,如果一个过滤器仅指定了scheme,所有有此scheme的URIs都匹配过滤器;如果一个过滤器指定了scheme和authority,但没有指定path,所有匹配scheme和authority的URIs都通过检测,而不管它们的path;如果四个属性都指定了,要都匹配才能算是匹配。然而,过滤器中的path可以包含通配符来要求匹配path中的一部分。<data>元素的type属性指定数据的MIME类型。Intent对象和过滤器都可以用"*"通配符匹配子类型字段,例如"text/*","audio/*"表示任何子类型。数据检测既要检测URI,也要检测数据类型。规则如下:·        一个Intent对象既不包含URI,也不包含数据类型:仅当过滤器也不指定任何URIs和数据类型时,才不能通过检测;否则都能通过。·        一个Intent对象包含URI,但不包含数据类型:仅当过滤器也不指定数据类型,同时它们的URI匹配,才能通过检测。例如,mailto:和tel:都不指定实际数据。·        一个Intent对象包含数据类型,但不包含URI:仅当过滤也只包含数据类型且与Intent相同,才通过检测。·        一个Intent对象既包含URI,也包含数据类型(或数据类型能够从URI推断出):数据类型部分,只有与过滤器中之一匹配才算通过;URI部分,它的URI要出现在过滤器中,或者它有content:或file: URI,又或者过滤器没有指定URI。换句话说,如果它的过滤器仅列出了数据类型,组件假定支持content:和file: 。如果一个Intent能够通过不止一个活动或服务的过滤器,用户可能会被问那个组件被激活。如果没有目标找到,会产生一个异常。3.2、通用情况上面最后一条规则表明组件能够从文件或内容提供者获取本地数据。因此,它们的过滤器仅列出数据类型且不必明确指出content:和file: scheme的名字。这是一种典型的情况,一个<data>元素像下面这样:<data android:mimeType="image/*" />告诉Android这个组件能够从内容提供者获取image数据并显示它。因为大部分可用数据由内容提供者(content provider)分发,过滤器指定一个数据类型但没有指定URI或许最通用。另一种通用配置是过滤器指定一个scheme和一个数据类型。例如,一个<data>元素像下面这样:<data android:scheme="http" android:type="video/*" />告诉Android这个组件能够从网络获取视频数据并显示它。考虑,当用户点击一个web页面上的link,浏览器应用程序会做什么?它首先会试图去显示数据(如果link是一个HTML页面,就能显示)。如果它不能显示数据,它将把一个隐式Intent加到scheme和数据类型,去启动一个能够做此工作的活动。如果没有接收者,它将请求下载管理者去下载数据。这将在内容提供者的控制下完成,因此一个潜在的大活动池(他们的过滤器仅有数据类型)能够响应。大部分应用程序能启动新的活动,而不引用任何特别的数据。活动有指定"android.intent.action.MAIN"的动作的过滤器,能够启动应用程序。如果它们出现在应用程序启动列表中,它们也指定"android.intent.category.LAUNCHER"种类:<intent-filter . . . >    <action android:name="codeandroid.intent.action.MAIN" />    <category android:name="codeandroid.intent.category.LAUNCHER" /></intent-filter>3.3、使用intent匹配Intents对照着Intent过滤器匹配,不仅去发现一个目标组件去激活,而且去发现设备上的组件的其他信息。例如,Android系统填充应用程序启动列表,最高层屏幕显示用户能够启动的应用程序:是通过查找所有的包含指定了"android.intent.action.MAIN"的动作和"android.intent.category.LAUNCHER"种类的过滤器的活动,然后在启动列表中显示这些活动的图标和标签。类似的,它通过查找有"android.intent.category.HOME"过滤器的活动发掘主菜单。我们的应用程序也可以类似的使用这种Intent匹配方式。PackageManager有一组query…()方法返回能够接收特定intent的所有组件,一组resolve…()方法决定最适合的组件响应intent。例如,queryIntentActivities()返回一组能够给执行指定的intent参数的所有活动,类似的queryIntentServices()返回一组服务。这两个方法都不激活组件,它们仅列出所有能够响应的组件。对应广播接收者也有类似的方法——queryBroadcastReceivers()。... 全文

Android开发 android开发

Android开发RSS阅读器

        RSS阅读器的Logo:                                       ... 全文

Android开发 android开发

2 3 4 5 6 7 8 9 10 11