第一部分: Introduction(介绍)

    目录包含:APP  Fundamentals     (应用程序基础)

         Device   Compatibility(设备兼容性)

         System Permission     (系统权限)   

     Introduction中包含的主要知识点:

        ①一个Activity提供了一个单一屏幕的用户界面;一个service在后台独立执行相关工作;可以使用intent从一个组件到另一个组件或者启动一个其他的APP

        ②可以创建不同的布局文件(Layout Files)来适用不同的手机屏幕

     APP Fundamentals中包含的主要知识点:

        ①每一个APP都有一个唯一的Linux user ID,系统为每个APP的所有文件加入权限,只有当user ID分配了时,APP才能使用它们;

        ②每个程序都有自己单独的VM(虚拟机),运行时的代码与其他APP隔离;默认情况下,每个APP运行在自己的进程中,当系统启动这个程序时,进程被执行,

         而当程序不再使用或者系统为其他APP分配内存时,进程将被关闭。

        ③默认情况下,每个APP做的工作只用访问组件,没有更多,这确保了安全的运行环境。  

        ④两个或多个APP之间共享数据或系统服务的方式:第一:分配相同的User ID,这种情况下,每个APP能够访问彼此的文件,也可以共享相同的Linux进程和相同         的VM,但APP必须拥有相同的证书。第二:使用系统权限。必须声明相关的权限,才可用调用其他APP的数据,For instance,读取联系人,发送短信,等等

        ⑤四种类型的APP 组件(component):Activitys(活动)Service(服务)Content Provide(内容提供者)Broadcast receives(广播接收者)

        ⑥AndroidManifest.xml略读:程序的清单文件,系统在运行时首先从AndroidManifest.xml文件中读取需要的组件,必须存放在Project的根目录

          做的事情:(1)声明用户权限,比如上网和读取联系人权限

               (2)声明APP所能运行的最小版本的Android系统( minimum API Level)

               (3)声明使用的硬件和软件特性或应用程序,比如相机,蓝牙服务等

               (4)API所使用的链接库,比如谷歌地图(已退出中国,可以使用百度地图)

               (5)更多...(and more)

          声明组件的功能;

          引用资源(APP Resource),SDK build tool为每个资源分配一个唯一的整形ID(Integer),有各自独立的文件夹存放,以便能够便利的修改和应用来适            用软件国际化,比如(such as)string.xml,你可以加入到res/values-zh/下里面的内容为中国语言,等等,系统会自动转变语言字体。

          为每个activity设置不同的layout来适用不同手机的方向和大小

    Device Compatibility(设备兼容性)包含的主要知识点:

        主要讲的是为你的APP能够成功的运行在各种设备上,such as 手机、平板设备(tablets)和TV,APP应该能忍受可变性和灵活的用户界面来适应不同的屏幕配      置;只有Android兼容的设备,在谷歌商店中所有的APP都是Android兼容的设备,然而你必须要考虑你的APP是否符合每一个潜在的设备配置。比如横屏和竖屏

      最好使用一个APK文件来适用不同的手机特性,比如,获取一个指南针罗盘。

<manifest ... ><uses-feature android:name="android.hardware.sensor.compass"android:required="true" />...
</manifest>

      PS:APP会比较他与设备之间的兼容性,如果不满足声明的所有特性,那么你的APP不会安装在你的设备上。当然,你可以设置 required的属性为false在运行时,

      或者你可以通过调用hasSystemFeature()来检测一个Feature是否可用,例如:

PackageManager pm = getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {// This device does not have a compass, turn off the compass feature
    disableCompassFeature();
}

      平台版本:Android 1.0 是API级别1,4.4是API级别19,使用<uses-sdk>的minSdkVersion 属性指出最小版本, targetSkdVersion属性指出最大版本

      在运行时需要检查API Level,当级别太低时,需要降低一些特性来适应设备

      屏幕配置;

      控制你的APP的商业化;

    System Permissiona(系统权限)中的主要知识点:

      安全结构:默认情况下,应用程序不被允许执行任何操作,因为他将严重影响其他APP操作系统和用户;每个APP都运行在一个沙箱中,而且必须显示的共享数据和资        源

      应用程序签名(Application  Signing):所有的.apk文件都必须签署数字签名,包含了APP的作者

      用户ID和文件访问:安装文件时,系统给每个包分配了一个独立的用户ID,在不同设备上,相同的包可能有不同的ID;因为不同的包有不同的ID所以在一个相同的进        程中只能运行一个包,你可以使用  sharedUserId属性在配置文件中的 manifest标签中分配相同的ID,你也可以用getSharedPreference(String , int)等方法        设置全局数据存储。

      使用许可权限:默认情况下,APP没有任何权限,这不利于用户体验,所以,在配置文件中,使用一个或多个<uses-permission>标记声明你的应用程序所需要的权        限,for instance:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.android.app.myapp" ><uses-permission android:name="android.permission.RECEIVE_SMS" />...
</manifest>

        如果请求系统权限失败,通常情况下将抛出  SecurityException异常,但也是有例外,例如  sendBroadcast(Intent)方法如果权限获取失败,将收不到消息。          然而,几乎所有情况下,一个权限失败将打印日志文件;

         特定的权限能够在一些地方强制执行你的程序的操作:

          ①当系统调用打电话时,系统会阻止调用APP的部分功能,(e.g 打电话时,无法启用数据连接)。

          ②当启动一个活动时,系统将阻止APP从其他的APP启动一个活动。

          ③同时发送和接受广播,控制谁能收到你的广播或者谁能发送一个广播给你。

          ④当访问和操作一个内容提供者(content  provider)。

          ⑤绑定或启动一个服务。

      声明和执行权限:编写和实施你自己的权限,必须先在AndroidManifest.xml文件中声明他们使用一个或多个<permission>标签,例如,APP想要控制谁能启动一个        活动可以宣布操作如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.me.app.myapp" ><permission android:name="com.me.app.myapp.permission.DEADLY_ACTIVITY"android:label="@string/permlab_deadlyActivity"android:description="@string/permdesc_deadlyActivity"android:permissionGroup="android.permission-group.COST_MONEY"android:protectionLevel="dangerous" />...
</manifest>

        < protectionLevel >属性是必需的,告诉系统要告知用户如何应用程序要求许可,或者是谁允许持有许可,在相关文档中描述。

        < permissionGroup >属性是可选的,用于帮助系统权限显示给用户。通常你会想将这个标准系统组(列入 android.Manifest.permission_group)或在更罕见的          情况下,由自己定义的。优先使用现有的组,这样简化了权限UI显示给用户。

        <description>属性,我们的约定,描述是两句话,第一个描述许可,第二个警告用户如果应用程序授予许可,将发生什么坏事。

        下面是标签(label)和描述(description)的一个例子,调用CALL_PHONE许可:

    <string name="permlab_callPhone">directly call phone numbers</string><string name="permdesc_callPhone">Allows the application to callphone numbers without your intervention. Malicious applications maycause unexpected calls on your phone bill. Note that this does notallow the application to call emergency numbers.</string>

        使用adb -s选项命令来查看所有权限信息:

$ adb shell pm list permissions -s
All Permissions:Network communication: view Wi-Fi state, create Bluetooth connections, full
Internet access, view network stateYour location: access extra location provider commands, fine (GPS) location,
mock location sources for testing, coarse (network-based) locationServices that cost you money: send SMS messages, directly call phone numbers...

      在配置文件中执行权限:此部分涉及到各个组件的使用功能描叙,以后将会详细解析,此处略。

      当发送广播时执行权限:同上。

      URI权限:到目前为止所描述的标准许可系统使用内容提供者时往往是不够的。一个内容提供者可能想保护自己的读和写权限,而其直接客户也需要操作特定uri到其他        应用程序。一个典型的例子是邮件附件的应用程序。访问权限的邮件应该受到保护,因为这是敏感的用户数据。但是,如果一个URI图片附件给一个图像浏览器,图像        查看器将没有权限打开附件,因为它没有理由允许访问所有电子邮件。这个问题的解决方案是per-URI权限:当开始一个活动或返回一个活动的结果,调用者可以设置        意图。 FLAG_GRANT_READ_URI_PERMISSION和/或Intent.FLAG_GRANT_WRITE_URI_PERMISSION。 这种授权接收活动许可访问特定的数据URI的        意图,不管是否有权限访问数据相对应的内容提供者的意图。这种机制允许一个公共capability-style模型,用户交互(打开附件,从列表中选择一个联系人,等)驱动特        别授予的细粒度的权限。这可能是一个关键设施减少应用程序所需的权限只有那些与他们的行为直接相关。然而,URI的细粒度权限确实需要一些合作内             容提供商持有这些URI。强烈建议内容提供商实现这个设施,并宣布他们支持通过android:grantUriPermissions属性或< grant-uri-permissions >标记。            更多的信息可以发现Context.grantUriPermission(),Context.revokeUriPermission(),和Context.checkUriPermission()方法。

总结:这部分的内容不是很重要,只是起了个介绍Android的作用,接下来会详细介绍Android的其他目录及指导。

新单词:

  configuration:配置; compile:vt,编译;配置;suffix:后缀;principle of least privilege:最小特权原理;regard:关于; incorporate:包含吸收; restrict:限制

   directly:一...就,立刻马上;

转载于:https://www.cnblogs.com/liter7/p/4735012.html

Android API Guides 安卓API指导----第一部分:Introduction(介绍)相关推荐

  1. android 连接电脑,安卓手机怎么连接电脑详细介绍【图文教程】

    随着科技不断地发展,现在市场上的安卓手机越来越多,但是有些安卓的手机用户们在下载软件,往电脑上传照片视频时还是不会,不知道应该怎么连接到电脑,其实有的时候数据线将电脑与手机连接起来后,手机上的资料并不 ...

  2. android io 模式,安卓手机I/O调度模式介绍

    使用CM固件或者一些自定义较丰富的ROM时可能会注意到有一个I/O调度调节的选项,里面提供了一些默认的调度模式,如果你不懂请看刷机之家小编给你详细介绍. [noop] 这个调度模式会把并到一个简单的队 ...

  3. Android API 指南 - Android API Guides

    http://developer.android.com/intl/zh-CN/guide/components/index.html ) 请找到自己要翻译的部分,按下面的'链接规范'添加到下面列表中 ...

  4. Android开发(17)-通过安卓API的Tabs3实现仿优酷tabhost效果

    课程还没有讲了多少,前两天老师就让自己写个视频播放器客户端,这个是他上课讲的一个小小demo,通过查看安卓API的tabs3,实现仿优酷视频客户端的tabhost效果.我的API路径是D:\andro ...

  5. js 调用android定位,基于html5+ 高德地图JS API使用安卓定位sdk用来进行定位

    使用Native.js打开Android的H5辅助定位 mui.plusReady(function() { if(plus.os.name == 'Android') { var AMapLocat ...

  6. Android 9的神经网络API

    前几天Google发布了Android 9,给广大开发者带来许多新特性,最令人振奋的是Android Neural Network API. 神经网络结合TensorFlow,让Android移动设备 ...

  7. Android 4.3(API 18)及以下调用 RelativeLayout.mesure() 时出现 NullPointerException 异常

    负责的一个新手引导的需求,友盟上报 Android 4.3(API 18) 的机型(公司APP 最低支持的安卓版本即为 4.3)中会出现 NullPointerException 的 bug. 百度后 ...

  8. Android Sensors (2) 传感器API的使用

    识别传感器和传感器能力 Android sensor framework提供了一些方法,使得你在运行时可以方便地查看设备上都有哪些传感器. API也提供了一些让你获取每个传感器性能的方法. 首先,你需 ...

  9. gradle 构建 Smack 报错:Can't find android.jar for 8 API. + steps for building android platform

    [0]README 1)本文旨在解决 Can't find android.jar for 8 API. Please install corresponding SDK platform packa ...

最新文章

  1. 前端新手学习记录1 -使用vscode编辑html
  2. 【控制】《多智能体系统一致性与复杂网络同步控制》郭凌老师-第3章-具有扩散作用的多智能体系统领导-跟随一致性
  3. 全球及中国静脉器械行业发展形势及前景战略规划建议报告2021-2027年版
  4. 【PP操作手册】生产订单的查询
  5. 登陆状态购物车数据结构
  6. ISO base media file format---iso 基础媒体文件格式(专业名称)
  7. django-后台管理-表显示相关
  8. mysql repos_mysql yum源安装
  9. pyqt 界面关闭信号_PyQt从类(子窗口)发送信号返回到MainWindow(类)
  10. [Java] 蓝桥杯 BEGIN-3 入门训练 圆的面积
  11. java中日历类的用法_java日期类的用法
  12. Mybatis中的update动态SQL语句
  13. java反编译jar包
  14. 图像坐标系与世界坐标系的变
  15. js原生css修改,原生js获取、添加、修改_非行间css样式
  16. 遗传算法简单求函数最值实例
  17. Nginx配置文件中文详解
  18. MySQL执行-SQL执行顺序
  19. 八、Echart图表 之 series盒须图(箱体图)基本使用与配置大全
  20. 安装VS2010的SP1补丁的办法

热门文章

  1. 基于 Asp.Net的 Comet 技术解析
  2. 文档型数据库设计模式-如何存储树形数据
  3. Linux 内核中的 GCC 特性(zz)
  4. sqlserver 查询语句执行历史
  5. 关于Map迭代循环,key和value的顺序问题
  6. Oracle学习笔记整理手册
  7. jee websocket搭建总结
  8. ABAP程序相互调用--SUBMIT
  9. Python学习心得——基础知识(六)
  10. DataGridView使用小结