Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android M
Code

探索Android M開發者預覽

by
Difficulty:IntermediateLength:LongLanguages:

Chinese (Traditional) (中文(繁體)) translation by tianyiliang (you can also view the original English article)

5月份,Google宣佈推出Android平臺的下一個版本Android M。雖然“M”代表什麼(Marshmallow?Macaroon? Macadamia Nut Cookie?)仍然是未知數,但您可以在Android M開發人員預覽中獲得。開發者預覽2僅在前幾天才發佈。

在本教程中,我們將介紹如何設置開發環境並安裝早期版本的Android M,然後再流覽此開發人員預覽中的一些新功能。在Android M,我們將看看如何使用新的資料綁定庫來減少樣板代碼,您的應用程式如何利用Android M的新許可權模型,以及Android的內置應用程式連結設置如何變得更加強大.

放棄

雖然您可以在開發人員預覽中流覽Android M功能,但請勿忘記,這是一個可提供預覽 API 的開發版本,因此您應該期望在最終SDK之前進行重大更改。您也不能發佈任何使用M開發者預覽開發的APP到Google Play。

由於此開發人員預覽是一項正在進行的工作,因此要讓開發環境保持最新狀態,並始終與最新版本的Android M開發人員預覽一起使用。為確保您不會錯過任何更新,您可能需要將Android Developers Blog加入書簽, 加入 Android M開發者社區並記下Google(暫定)發佈日期。

  • 開發者 預覽3: 7月下旬·
  • 最終SDK:  2015年Q3,預計Android M將於9月份發佈

1.設置Android M Preview SDK

如果您想開始試用Android M開發者預覽版,則需要安裝Android Studio 1.3或更高版本。

Android Studio團隊通過幾個管道發佈更新,包括穩定betadevcanary管道。儘管有beta標籤,您可以在canary上找到Android Studio 1.3測試版。

連接到canary通道:

  •  打開Android Studio。
  •  在工具列中,按一下Android Studio並選擇首選項。·
  • 打開外觀與行為功能表,展開系統設置,然後按一下更新

In the Preferences window open the Appearance Behaviour menu then expand System settings and click Updates

  • 確保選中自動檢查更新的 核取方塊。
  •  打開下拉式功能表,選擇canary通道
  • 按一下  立即檢查  按鈕。

Open the drop-down menu and select Canary Channel

此時,Android Studio應詢問您是否要下載最新的canary版本。按一下更新並重新啟動。 如果您沒有看到對話方塊,請嘗試通過按一下更新關閉“ 首選項”視窗。這應該強制出現對話方塊。

接下來,打開您的SDK Manager並下載:

  •    Android MNC預覽·  
  • Android支援資源庫(版本15或更高版本) 

In the Android SDK Manager select Android M and Android Support Repository and then click Install

就是這樣, 您的開發環境現在是Android M-ready。

在接下來的幾節中,我將介紹預覽SDK中介紹的一些主要功能,並展示如何開始在自己的Android M項目中使用這些功能。

如果您要創建一個Android M示例專案,並嘗試自己的一些代碼片段,只需創建一個新的Android專案,並將最小的SDK設置為MNC Android M(預覽)

2.數據綁定庫

隨著專門的資料綁定庫的發佈,Android M將資料綁定添加到開發人員的工具集中。這個新的資料綁定庫提供了通過讓資料直接綁定到佈局檔中的特定視圖來最大限度地減少編寫的代碼量。

瞭解資料綁定的工作原理的最佳方式是查看源碼。所以我們不要看資料綁定背後的理論,而是看一些代碼。

步驟1:設置數據綁定庫

專案使用資料綁定,需要將資料綁定庫依賴項添加到專案的build.gradle文件中。打開您的頂級Gradle構建檔並添加以下內容:

您還需要將資料綁定外掛程式添加到要使用資料綁定的每個模組。打開你的模組的build.gradle檔並添加以下內容:

Step 2: 數據綁定示例

使用資料綁定庫設置,我們來看一個資料綁定的基本示例。想像你有一個Student類:

您要在佈局檔中顯示學生的名字。要通過資料綁定來實現,您可以在佈局檔中使用以下內容:

此新<layout>標籤將您的佈局檔轉換為資料綁定佈局檔。

在這些<data>標記之間,列出您要綁定到使用者介面元素的所有變數。

這一行代碼定義了一個變數,student 在這種情況下描述了一個屬性,然後您可以在佈局中使用。

結束<data>標籤後,您可以按照正常的方式創建其餘的佈局,唯一的區別是現在可以在佈局檔中設置student屬性firstName

Android Studio可能會標記一些錯誤,直到構建專案。這是因為資料綁定庫需要生成一個包含佈局屬性的綁定的類,並且知道如何為綁定運算式分配值。 此檔僅在構建項目時生成,因此打開“ 生成”功能表並選擇“創建專案”。

Android Studio構建您的專案,並生成一個以佈局檔命名的新類,並添加了一個綁定尾碼(例如  ActivityMainBinding)。

要使此綁定生效,您需要將綁定類添加到main activity的onCreate()方法中:

這是一個非常簡單的資料綁定示例。當您在自己的專案中使用資料綁定庫時,通常會對此基礎示例進行詳細說明,並在資料物件的屬性更改時,讓資料物件能夠更新應用程式的使用者介面。 要查看此類資料綁定的示例,請查看Google的官方資料綁定指南

3. Android M的許可權

我們的智慧手機和平板電腦都比以往任何時候更多地存儲個人資訊,所以Google給予使用者更多的控制權來控制移動應用程式在Android M中訪問資訊是有道理的。

到目前為止,Android應用程式已經採取了全面或全無方法的許可權。在安裝的時候,應用程式要求他們可能需要的所有權限,然後用戶可以接受或拒絕整個許可權列表。

Android M引入了全新的許可權模型,使使用者能夠選擇在運行時授予每個應用程式的許可權。本質上,應用程式在需要時請求許可權,然後用戶可以接受或拒絕每個許可權。

例如,使用者可以讓Facebook應用程式訪問他們的位置,而不是他們的設備的麥克風或攝像頭。用戶還可以撤銷以前授予的許可權。 如果他們決定不再讓Facebook知道他們的位置,他們總是可以撤銷android.permission.ACCESS_FINE_LOCATION

許可權和向後相容性

新的許可權模式對於安全意識強的Android用戶來說是個好消息,但對開發人員來說意味著什麼?

首先,新的許可權模型僅在Android M上得到支持。儘管Android作業系統實際上向後相容相當簡單(您將在一分鐘內看到),依賴于您的應用程式知道APP是安裝在Android M的設備上或運行較早版本的設備上。

檢查Android的版本可能聽起來很簡單,但是由於Android M的開發性質,這個相當常規的任務會變得更混亂。目前,為了您的應用程式檢查是否安裝在Android M開發人員預覽中,您需要使用MNC代號。

但是根據Google的代碼示例,一旦API已經完成,您的應用程式應該使用以下代碼:

所以現在使用"MNC".equals ,但是如果在最後的SDK發佈之前的某個時刻發生變化,不要驚訝。一旦最終的Android M SDK出現,還要確保您仔細檢查這段代碼。

無論您的設備安裝的Android版本如何,您都可以正常地聲明清單中的所有權限。然後,如果您的應用程式安裝在運行Android M以外的設備上,則只需恢復舊的許可權模型,並在安裝時請求所有權限。

處理Android M上的許可權請求和回應有點複雜,但您仍然在清單中以完全相同的方式聲明許可權。

唯一的奇怪之處在於,如果您的應用僅需要對Android M的許可,則應使用新<uses-permission-sdk-m>元素進行聲明  。在Android M上,<uses-permission-sdk-m><uses-permission>行為完全一樣,但 <uses-permission--sdk-m>在Android M前的設備上忽略了任何聲明的內容。

請求和處理Android M上的許可權

想像一下,您的應用程式已經確認了它是安裝在Android M系統上,您如何處理許可權請求和處理用戶回應?

這些是不同的階段:

  • 檢查您的應用程式是否已具有必需的許可權。每當你的應用程式需要執行受限制的操作時,它應該檢查它是否可以訪問所需的許可權。 即使使用者以前已經授予此許可權,您也需要完成此步驟。這是因為用戶可以隨時撤銷許可權而無需通知應用程式。 好消息是,檢查許可權是相當簡單的,只需調用  Context.checkSelfPermission(permission_name)
  •   沒有許可權?那就請求. 您使用新方法Activity.requestPermissions(String[], int) 請求許可權。當您調用此方法時,系統將顯示一個對話方塊,使用者可以在該對話方塊中授予或拒絕該許可權。你可能會注意到沒有辦法添加String/@StringRes來解釋你為什麼要提出這個請求,所以如果為什麼你的應用程式需要一個特定許可權這點不明顯,你可能想給使用者一些資訊,然後在調用  requestPermissions
  • 接收用戶的回應一旦使用者授予或拒絕該許可權,系統會調用activity的onRequestPermissionsResult(int, String[], int[])方法並傳遞結果。
  • 處理用戶的回應。最後一步是檢查這些結果並相應地作出。要對onRequestPermissionsResult() 資料採取行動,您的activity需要重寫此方法:

新許可權模型的最佳實踐

新的許可權模型意味著新的最佳做法。以下是一些指導方針,可以幫助您更有效地使用Android M的詳細許可權設置。

盡可能少的要求許可權

每當您的應用發出許可權請求時,用戶都可以拒絕該請求,這樣會給用戶降低應用功能的機會。所以你應該讓你的應用程式盡可能少的申請許可權。

您可能還想考慮是否可以通過指示其他應用程式執行相關任務來實現相同的結果。例如,您可以使用MediaStore.ACTION_IMAGE_CAPTURE 的intent而不是請求android.permission.CAMERA

妥善處理拒絕

用戶可以拒絕任何(甚至每個)許可權請求。如果發生這種情況,您需要確保您的應用程式不會卡住,崩潰,停止工作或禁用功能。 畢竟,您的用戶可能會認為您的應用有錯,甚至可能會導致Google Play的負面評價。

處理拒絕的許可權根據您的應用程式而有所不同,但它可能涉及到返回空資料集,從應用程式功能表中刪除選項或顯示快顯視窗,說明使用者可以通過授予應用程式某些許可權來解鎖此功能。

測試,測試和更多測試

您的目標是提供良好的使用者體驗,無論用戶選擇授予或拒絕什麼許可權。這意味著您需要確保您的應用程式可以處理每個可能性,而唯一的方法是通過不斷測試。

4.應用程式連結

當您流覽互聯網時,點選連結將經常打開一個應用選擇器對話方塊。當您有多個應用程式可以處理連結的內容時,這是有用的,通常這個額外的步驟不是必要的,特別是當您只有一個應用程式可以處理有問題的內容。

在即將推出的M版本中,Android內置的應用程式連結正在升級,旨在通過自動將應用程式與Web域相關聯來刪除這種經常不必要的應用程式選擇器步驟。

例如,假設您點擊了Google搜索結果中的Twitter個人資料連結。在Android M中,系統會檢查您的任何應用是否可以處理此Twitter URL並啟用自動連結。 然後,Android會啟動官方的Twitter應用程式,而不顯示“ App Chooser”對話方塊(假設您的設備上安裝了Twitter)。

如果您擁有與您應用程式相關的網域,這是一個好消息。將網站與應用程式關聯後,只要使用者點擊任何連結到您的網站,作業系統將自動啟動您的應用程式,而不是顯示“ App Chooser”對話方塊。 這不僅可以幫助您提供更加無縫的用戶體驗,還可以讓使用者回到應用程式,而不是讓他們選擇使用競爭的協力廠商應用程式或網路流覽器。

如何建立應用程式連結?

要在您的應用程式和自己的Web域之間建立連結,您需要在域上的.well-known位置託管一個JSON檔。

如果您希望自己的應用程式自動處理與您網站(mywebsite.com)相關的連結,則需要將JSON檔上傳到mywebsite.com的根目錄。

下面是一個statement.json檔的內容和佈局示例,說明Android應該始終使用您的應用程式(myapp)來顯示與mywebsite.com相關的內容:

package_name鍵指的是在你應用清單中聲明的包名。sha256_cert_fingerprints金鑰的值  是您應用簽章憑證的公開證書指紋(SHA256)。

請注意,在第一個M開發者預覽版本中,此JSON檔通過HTTP協議進行驗證。在最終的M版本中,它將通過加密的HTTPS協議進行驗證。 這是使用開發者預覽的一個奇怪之處,你要關注後續版本。

最後一步是告訴Android作業系統,它不需要提示使用者某些類型的連結。這意味著將android:autoVerify="true"屬性添加到<intent-filter>應用程式清單中的每個標籤。

當應用程式清單中顯示android:autoVerify屬性時,Android作業系統會在使用者首次安裝應用程式時驗證這些連結。本質上,從包中的<intent-filter>標籤編譯了唯一的主機名稱列表,Android M的新Intent Filter Verifier元件試圖從每個主機名稱中獲取JSON檔。 然後根據應用程式ID和已安裝套裝軟體的證書檢查這些JSON檔,Android的套裝軟體管理器將存儲結果。

當然,如果此驗證失敗,則應用連結行為將無法用於您的應用。但假設驗證成功,Android M會自動啟動您的應用,只要用戶點擊任何與您的網站相關的連結。

結論

在本教程中,我們研究了如何在Android M中運行應用程式連結,新的許可權模型和資料綁定庫。我們還看到了在Android Studio 1.3 beta或更高版本的開發人員預覽中如何通過設置Android M來開始嘗試這些新功能。

有關Android M的更多資訊,請查看Google官方文檔。在這裡,您可以找到有關新功能的詳細資訊,測試指南,如果您想從用戶的角度來瞭解Android M的實際操作體驗,您會發現flash到Android設備的系統映射。

关注我们的公众号
Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.