一、權限(<uses-permission>)相關
1、變化
Android 5.1-?或者target SDK 為 22-:如果您在清單中列出了危險權限,則用戶必須在安裝應用時授予此權限;
Android 6.0+?或者target SDK 為 23+:應用必須在清單中列出權限,并且它必須在運行時請求其需要的每項危險權限。用戶可以授予或拒絕每項權限,且即使用戶拒絕權限請求,應用仍可以繼續運行有限的功能。
2、危險權限中分為很多組,如果同意了相關權限組,則改組所有權限都允許。
3、權限檢查
ContextCompat.checkSelfPermission(context , Manifest.permission.XXX)
4、權限申請
ActivityCompat.requestPermission(activity , String[] permissions , int requestCode)
requestCode 作為一個請求標示,在處理權限申請時用于區別
5、處理權限申請結果
重寫 Activity.onRequestPermissionResult(requestCode , permissions , int[] grantResults)
注:
(1)檢查和處理返回的結果都是兩種:PackageManager.PERMISSION_GRANTED 和 PackageManager.PERMISSION_DENIED
(2)未在 Manifest 中聲明的權限是不能動態申請的,只有危險權限才會在運行時申請
二、ActionBar
1、使用ActionBar
之前使用 ActionBar 需要繼承 ActionBarActivity,現在為兼容老版本而且體驗和功能更好,使用 AppCompatActivity,將 theme 設置成有 ActionBar 即可。在 Activity 中使用 getSupportActionBar() 即可操作狀態欄。
若要自己定制 ActionBar,使用 ToolBar。
(1)繼承 AppCompatActivity,將 theme 改為 NoActionBar。
(2)在布局文件中添加 ToolBar
(3)在 Activity 的?onCreate()?方法中,調用 Activity 的?setSupportActionBar()?方法,然后傳遞 Activity 的工具欄。該方法會將工具欄設置為 Activity 的應用欄。
注:若要獲取該 ActionBar,在 Activity 中使用 getSupportActionBar() 即可。
2、Action Button的使用
(1)添加Action Button
首先創建XML文件,ActionBar 上的布局是在 res/menu 目錄下,添加 <item> 標簽。
然后在 Activity 中加載
注意:showAsAction 值說明(這些值可以組合使用):
1)ifRoom:會顯示在ActionBar中,如果太多 Item 時會隱藏在溢出列表中;
2)always:無論是否溢出,總會顯示;
3)withText:盡可能的顯示這個標題,如果圖標有效且空間有限,標題有可能顯示不全;
4)never:總是顯示在溢出列表中;
5)collaspseActionView:如果在 ActionBar 上則顯示圖標,在溢出列表中顯示文字。與 ifRoom 配合使用,它隨著 ActionBar 變化而變化。
(2)事件處理
重寫 Activity.onOptionsItemSelected(MenuItem item) 方法,根據 MenuItem 的 ID 進行不同事件處理。
3、Action View 使用
(1)Action View 有很多功能。例如,一個搜索動作視圖可以讓用戶在應用欄上輸入搜索文字,而不用改變 Activity 或者 Fragment 界面(意思是不用在一個新的界面上進行搜索動作)。
(2)創建 Action View
在 menu 文件中添加 item,必須添加 actionViewClass 或者 actionLayout 屬性(若使用v7包中的類,命名空間是app,不是android)。
(3)在 Activity 中加載 menu,然后通過 menu.findItem(int id) 拿到 MenuItem,可以對 Action View 做更多操作。
4、Action Provider 的使用
(1)創建 Action Provider
在 menu 文件中添加 item,必須添加 actionProviderClass 屬性(若使用v7包中的類,命名空間是app,不是android)。
(2)以 ShareActionProvider 為例
注意:
(1)v7包的 ActionProvider 需要通過 MenuItemCompat.getActionProvider(menuItem) 方式獲得,早期版本通過 menuItem.getActionProvider() 。
(2)要為 ShareActionProvider 設置分享的 Intent 。
5、返回按鈕--Up Button
官方提供了一種在 Action Bar 上添加返回上一級按鈕的方法。
API 16+:Manifest 的 activity 標簽添加 parentActivityName 屬性,指定返回哪個 Activity;
API 15-:
然后在 Activity 中設置