第二章
1. 给Application访问网络的权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2. Android的权限
Android的每个权限Label保护相关的资源,在应用的manifest文件里声明的users-permission节点会在用户安装应用的时候提示给用户,用户确定之后表示这些相关的权限就授权给应用了。因此,应用程序在runtime是不做相关的检查的。在应用程序中执行一个没有授权的动作时,会抛出SecurityException的异常。
Android的权限定义在常量Manifest.permission类里。
你也可以自定义自己的权限,然后给Intent,Activity,Service和Broadcase使用。
3. Resources
Resource包括图片,国际化文字或者其他任意静态值。
Resource定义在/res目录下。
Resource可以在code里或者xml里访问。
4. Resource的特点
每个Resource都有ID
每个Resource都有一个固定的类型
Resource有特殊的存放位置和文件
5. 在/res目录下声明的Resource不仅作为你的应用程序的一部分被打包,而且也在程序里被访问。
一旦你定义一个resource在/res(除了/res/raw目录下,该目录下存放audio或者video文件等)目录下,Android平台会自动解析它,然后使用aapt工具去关联一个ID到R上。
6. 为什么会有Resources
第一,隔离了代码和外部资源,这样就能保证代码关注于应用以及整洁
第二,Resources高效并且快速的被访问到,因为XML被编译成为二进制格式
第三,Resources支持在运行时根据环境(比如语言,屏幕配置以及硬件能力等)来动态加载
7. Plurals资源(复数)
Plural是用来让系统自动处理复数字符串的一类型特殊资源,这个主要用于处理英语里名词的单数和复数用的。
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<plurals name="deal_service_new_deal">
<item quantity="one">1 new deal!</item>
<item quantity="other">
<xliff:g id="count">%d</xliff:g>
new deals!
</item>
</plurals>
</resources>
注意:
1) xmlns:xliff是指定OASIS XLIFF XML format
2) 需要定义两个item,一个one,另一个other。就是区分单数和复数的不同显示
3) 在item节点里可以使用String.format
4) 使用Resources.getQuantityString(R.plurals.deal_service_ new_deal, 1)来访问Plurals资源。(这里传入的是1,也可以传入其他数字)
8. 字符串资源放在/res/values目录下
9. Assets
如果你需要普通访问而不是被aapt处理过的文件,你就可以把文件放到/assets目录下。任何放在/assets文件夹下的文件都可以被应用访问。
10. Views and widgets
Android.view.View是所有视图的基类。分为三大类主要的Views:
1) SurfaceView:可以在其上通过drawing和graphics画出界面
2) ViewGroup:对应于各种Layout以及Group容器
3) Widget:android.widget包下的各种Android提供的控件
11. Intents和IntentFilters
Intent描述你想做什么操作,他不做任何实际的操作,仅仅描述什么事情需要去做。
IntentFilter用于声明Component处理哪些指定的Intent。
12. 发起分享Intent
Intent i = new Intent(Intent.ACTION_SEND);
i.setType(type);
i.putExtra(Intent.EXTRA_SUBJECT, "Subject:");
i.putExtra(Intent.EXTRA_TEXT,”abc”);
startActivity(Intent.createChooser(i, "Share deal ..."));
最后这一行代码里,通过Intent.createChooser(I,"Share deal …"))去创建了一个chooser,"Share deal …"会作为共享界面的Title,并且会通过Chooser挑出符合该Intent的选项,并且不会出现选择默认选项。如图所示:
将上面的代码改为下面的之后:
startActivity(i);
13. Intent分类
1) 显式的Intent(explicit),这个一般用在应用的内部,需要知道Component的具体名字以及类名。
2) 隐式的Intent(implicit),跟外部的应用联系时,使用隐式的。
隐式Intent通过action,data,type等属性被平台解析找到相应的能处理的组件。
14. Intent解析
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
这里MAIN和LAUNCHER用于声明Component能够响应Home按钮。
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
这个IntentFilter解析过程:
I. Action(SEND)
II. Category(DEFAULT),使用startActivity方法启动一个隐式的Intent的时候,都会自动为其加一个DEFAULT的category
III. Data
Android通过PackageManager去追踪有哪些注册的IntentFilter。当一个新应用安装的时候,应用里的IntentFilter就被加到PackageManager,被卸载的时候就删除。
15. Application对象
Application对象有定义完善的生命周期,可以被用来存放应用的全局状态。
Application对象会在应用程序进程创建的时候创建,不会跟Activity或者Service等Component的生命周期挂钩
Application对象继承Application类,里面有onCreate方法
在Manifest文件里使用android:name="你实现的Application类名"来给你的应用程序指定你自定制的Application对象:
<application android:icon="@drawable/ddicon"
android:label="@string/app_name"
android:name=".DealDroidApp">
16. ConnectivityManager
this.cMgr = (ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE);
ConnectivityManager是系统服务,可以通过它去检查网络状态
17.
分享到:
相关推荐
Android in Practice.pdf 英文文档,版本库控制的代码,和apk安装应用程序,可以对照着学习,代码用版本库进行管理,包括git的版本库和svn版本库,需要的敬请下载,机会难得,总共100M,因上传受限制,所以将文档...
这个资源包括 Android in Practice.pdf 英文文档,版本库控制的代码,和apk安装应用程序,可以对照着学习,代码用版本库进行管理,包括git的版本库和svn版本库,需要的敬请下载,这是第二部分 ,第一部分在下面的...
android in practice android in practice android in practice android in practice android in practice android in practice android in practice android in practice android in practice android in practice ...
《Android in Practice 3rd》是一本专注于Android应用开发实践的书籍,第三版对原有的内容进行了更新和扩展,旨在帮助开发者提升在Android平台上的实战能力。这本书覆盖了从基础到高级的各种主题,包括UI设计、数据...
《Android in Practice》一书由Charlie Collins、Michael Galpin与Matthias Käppler共同编著,由MANNING出版社出版,旨在为Android开发者提供深入的实践指导。本书不仅涵盖了Android开发的基础知识,还提供了丰富的...
### Android in Practice(2011):Android开发系列 #### 一、背景与基础知识 **1. Introducing Android** 本书开篇介绍了Android操作系统的基本概念和发展历程,为读者提供了全面的Android入门指南。 - **定义与...
### Android in Practice 知识点概览 #### 一、背景与基础知识 ##### 1.1 Introducing Android - **Android 系统架构**:本书首先介绍了 Android 的系统架构,包括 Linux 内核层、硬件抽象层 (HAL)、Android 运行时...
通过深入阅读《Hadoop in Practice》第二版,读者不仅可以掌握Hadoop的基础知识,还能了解到如何在实际项目中有效应用这些技术,解决大数据处理中的各种问题。尽管是英文版,但对于渴望在大数据领域深化技能的人来说...
Security Patterns in Practice describes lots of patterns to solve the real problems
Java Concurrency in Practice 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者...
Java Concurrency in practice
Docker in Practice, 2nd Edition
《Java Concurrency in Practice》中文版笔记
根据所提供的文件信息,我们可以提炼出关于《Modern Fortran in Practice》书籍的相关知识点。首先,我们需要了解Fortran编程语言的发展历程、最新标准Fortran 2008的特点,以及本书的主要内容和目的。 Fortran语言...
Decoupled Drupal in Practice: Architect and Implement Decoupled Drupal Architectures Across the Stack By 作者: Preston So ISBN-10 书号: 1484240715 ISBN-13 书号: 9781484240717 Edition 版本: 1st ed. ...