Android API Guides 安卓API指导----第一部分:Introduction(介绍)
第一部分:?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(介绍)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重集合中找出最相近的一个数字
- 下一篇: xmind工具软件(相关)