成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

開發者須知:Android M 的權限機制

移動開發 Android
新的權限模式之下,用戶將能夠根據自己的實際需要在運行時中對各項權限進行審核,且隨時關閉其中的部分權限。在今天的文章中,我們將共同了解如何處理權限機制中出現在新型變更,并掌握它們給開發人員乃至用戶使用體驗帶來的實際影響。

內容簡介

在Android M版本發布之前,Android系統中的權限模式一直采取較為簡單粗暴的處理方式——即在安裝之時由用戶作出全部允許或者全不允許的二元選擇。這意味著如果用戶希望使用某款應用程序,則首先需要接受其中包含的全部權限要求或者干脆放棄安裝。這就導致很多開發人員的編程成果在安裝之時就被用戶所棄用,根本無法真正實現用戶與開發者間的信任關系乃至其它隱私保障手段。

而在新的權限模式之下,用戶將能夠根據自己的實際需要在運行時中對各項權限進行審核,且隨時關閉其中的部分權限。在今天的文章中,我們將共同了解如何處理權限機制中出現在新型變更,并掌握它們給開發人員乃至用戶使用體驗帶來的實際影響。

值得強調的是,這篇文章是在Android M正式版本發布之前所寫成,因此其中一部分信息可能在未來出現變動。

1. 哪些部分要求對應權限

盡管Android M仍然要求開發者在AndroidManifest.xml當中進行權限聲明,但用戶現在已經能夠在運行時當中對應用所使用的權限進行審核或者撤銷。在這套Android新版本當中,最重要的變動就是android.permission.INTERNET與android.permission.WRITE_EXTERNAL_STORAGE已經從危險評級恢復到了普通等級。這意味著我們用不著再使用之前針對這二者向用戶提出申請。

在發出權限審核請求時,用戶將需要根據權限組對其提供授權,而非對組內的各單獨權限作出審核。這意味著如果我們的應用程序需要同時發送及收取短信消息,那么用戶只需要批準短信權限組即可。下面這份列表為Android M開發者預覽版2當中能夠從系統設置中直接查看到的各受支持權限組。

另外需要注意的是,Android是一套強大的Intent系統,它允許開發人員獲取來自其它應用程序的數據。相較于申請攝像頭使用權限并開發出一款能夠使用Camera API的應用,大家現在可以要求用戶利用現有受信拍照應用拍攝一幅圖像,從而幫助自己的應用程序獲取所需之圖像素材。這些與攝像頭相關的權限將由拍照應用負責處理,而非應用程序本身。

2. 如何要求獲取權限?

當大家需要使用某項要求權限審核機制的功能時,系統會執行一系列事件流程。我們首先需要查看該權限是否已經為用戶所允許。

如果用戶此前尚未批準這項權限,那么大家可以通過權限請求對話框的形式向用戶作出提示。在***彈出權限請求對話框時,用戶需要在拒絕與接受二者之間作出選擇。

不過如果用戶此前已經拒絕了相關權限的請求,并再次面對同樣的請求,這時他們將看到額外的選項——即永遠停止顯示此類權限請求詢問。

大家可以在請求某項權限之前通過調用checkSelfPermission來檢查用戶此前是否已經通過了該權限授權。這項方法會根據權限是否得到批準而返回一個int值。

如果返回結果為PackageManager.PERMISSION_GRANTED,那么大家可以繼續根據既定設計思路推進。不過如果該權限此前尚未得到批準,那么我們需要利用requestPermissions向用戶發出請求,利用一個權限字符串數組進行傳遞,并利用一段自定義int請求代碼對應用的邏輯流程進行追蹤。

  1.  int hasLocationPermission = checkSelfPermission( Manifest.permission.ACCESS_FINE_LOCATION ); 
  2. int hasSMSPermission = checkSelfPermission( Manifest.permission.SEND_SMS ); 
  3. List<String> permissions = new ArrayList<String>(); 
  4. if( hasLocationPermission != PackageManager.PERMISSION_GRANTED ) { 
  5.     permissions.add( Manifest.permission.ACCESS_FINE_LOCATION ); 
  6.   
  7. if( hasSMSPermission != PackageManager.PERMISSION_GRANTED ) { 
  8.     permissions.add( Manifest.permission.SEND_SMS ); 
  9.   
  10. if( !permissions.isEmpty() ) { 
  11.     requestPermissions( permissions.toArray( new String[permissions.size()] ), REQUEST_CODE_SOME_FEATURES_PERMISSIONS ); 

在requestPermissions被調用之后,用戶則會看到一個對話框,其中包含應用程序所需權限項目之權限組提示。這是請求必需權限的***實踐方式,現在大家***不要在應用***啟動時一次性要求用戶接受全部對應權限。

當用戶點選了對話框中的選項之后,我們接下來要調用onRequestPermissionsResult并在Activity當中進行訪問。通過這種方式,我們的應用程序將能夠在用戶拒絕了一項或者多項權限請求之后繼續運行剩余部分功能。

以下代碼顯示了我們該如何在某項權限被批準或者拒***對結果進行查詢。如果用戶拒絕了我們提出的必要權限申請,大家應當禁用對應的功能并允許用戶了解其為何無法在應用程序當中正常生效。

  1. @Override 
  2. public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
  3.     switch ( requestCode ) { 
  4.         case REQUEST_CODE_SOME_FEATURES_PERMISSIONS: { 
  5.             for( int i = 0; i < permissions.length; i++ ) { 
  6.                 if( grantResults[i] == PackageManager.PERMISSION_GRANTED ) { 
  7.                     Log.d( "Permissions", "Permission Granted: " + permissions[i] ); 
  8.                 } else if( grantResults[i] == PackageManager.PERMISSION_DENIED ) { 
  9.                     Log.d( "Permissions", "Permission Denied: " + permissions[i] ); 
  10.                 } 
  11.             } 
  12.         } 
  13.         break; 
  14.         default: { 
  15.             super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
  16.         } 
  17.     } 

3.  Android M當中的遺留應用

盡管針對Android M開發而成的應用程序必須采用新型權限對話框與相關實現方法,但面向早期Android版本構建的應用仍然會在安裝時直接向用戶顯示權限列表并要求一次性接受或拒絕。不過在Android M當中,用戶完全可以在作出選擇之后隨時對相關權限進行調用。

由于負責處理權限調用任務的底層結構并不適用于面向早期Android版本的應用程序,所以當相關權限未被接受時,任何要求配合相關權限的功能都會返回null、0或者空值。這有可能導致應用程序出現意料之外的行為,因此建議各位開發人員對自己的原有應用程序進行升級,以確保其盡早支持Android M中的全新權限模式。

總結陳詞

在今天的文章中,大家已經了解了新型Android M權限模式以及如何在自己的應用程序當中為其提供支持。我們還探討了如何調整針對早期版本系統開發的應用程序,以確保其能夠與Android新版本順暢協作。利用這些信息,大家應該能夠保證自己的應用程序做好迎接Android下一代重要版本更新的各項準備。

責任編輯:chenqingxiang 來源: 51CTO
相關推薦

2015-07-20 09:16:42

iOSWatchKit開發

2014-09-01 09:53:50

Android框架

2015-08-11 11:01:22

設計原則開發者

2014-08-08 13:27:34

Android LAndroid開發

2014-05-27 13:48:34

開發者付費

2015-09-18 08:41:12

androidM權限

2015-06-15 10:57:34

開發者2015移動開發

2015-08-31 09:41:38

androidM權限

2019-05-30 08:00:00

2015-07-13 09:43:15

Android M漏洞

2014-05-04 10:58:19

開發者廣告

2022-10-25 18:46:36

JavaScript

2010-07-28 14:21:43

Flex

2013-07-18 09:42:23

2015-06-09 05:26:20

iOSOS XWWDC

2010-07-29 09:36:11

Android開發防盜版機制

2012-06-13 01:23:30

開發者程序員

2012-03-23 13:31:14

Windows Pho

2013-04-02 09:23:37

2015-06-25 10:56:53

索尼Android M
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日日干夜夜操 | 女朋友的闺蜜3韩国三级 | 国产农村妇女精品一区 | 精品视频一区二区 | av在线免费播放 | 国产成人精品午夜 | 欧美电影在线 | 精品日韩在线 | 欧美一区二区三区在线 | 日韩一区二区av | 爱爱视频在线观看 | 九九99靖品 | 精品久久久久久久久久久久久久 | 日本不卡一区二区三区在线观看 | 久久精品一区 | 久久久美女 | 伊人久久精品一区二区三区 | 欧美精品久久 | 亚洲av毛片| 夜夜夜操 | 毛片av免费看 | 欧美国产亚洲一区二区 | 天天天天天天操 | 色综合久久88色综合天天 | 黄网在线观看 | 国产一区2区 | h视频网站在线观看 | 国产日韩欧美一区 | 成人欧美一区二区三区在线播放 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 欧美一区二区三区一在线观看 | 中文字幕av在线一二三区 | 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 国产1区2区 | 97精品国产手机 | 日本啊v在线 | 亚洲一区 中文字幕 | 黄色在线免费观看视频 | 亚洲一区二区三区高清 | 国产欧美精品区一区二区三区 | 国产一区二区三区在线 |