動態許可權《一》基本介紹

2021-09-20 08:57:45 字數 3824 閱讀 6633

android 6.0以上為了保護使用者的隱私,和以往被人詬病的許可權機制,確立了新的許可權機制。從 android 6.0(api 級別 23)開始,使用者開始在應用執行時向其授予許可權,而不是在應用安裝時授予。此方法可以簡化應用安裝過程,因為使用者在安裝或更新應用時不需要授予許可權。它還讓使用者可以對應用的功能進行更多控制;例如,使用者可以選擇為相機應用提供相機訪問許可權,而不提供裝置位置的訪問許可權。使用者可以隨時進入應用的「settings」螢幕呼叫許可權。

谷歌將許可權分兩類:1.正常許可權。2.危險許可權。

正常許可權:

危險許可權:

那麼對於乙個應用要關注的就是那些危險許可權,也就是我們所說的敏感許可權。下表列出來有關的危險許可權。

許可權名稱

1.calendar

2.camera

3.contacts

4.location

5.microphone 

6.phone

7.senors

8.sms

9.storage

相容性來說,有以下細節:

1.低於api23 也就是系統6.0以下的,在manifest中註冊申明許可權清單,則自動授予許可權,但是使用者可以去設定中心關閉許可權,但是不會引起應用執行異常

2.api23系統6.0以上的,需要在使用的時候去申請,沒有申請就去使用則會引起應用執行異常。許可權失效會導致securityexception

3.一開始是6.0以下系統應用,做了動態許可權以後,會自動授予原先已有的許可權,如果有新增的危險許可權,需要做申請。

4.一開始就做了動態許可權,再換回到6.0以下編譯環境,新的apk無法安裝。

下面以乙個流程圖說明問題。

危險許可權的表單如下:

申請許可權的工具類如下:

package com.nfdaily.nfplus.util;

import android.manifest;

import android.content.pm.packagemanager;

import android.os.build;

/** * created by xilinch on 2017/5/3.

* 對關鍵的許可權進行申請 calendar /camera/ contacts/location/microphone /phone/senors/sms/storage

* 增加對版本號的判斷,大於等於23 (6.0)以上才進行許可權的申請

*/public class utilrequestpermissions

/*** 檢查許可權

* @param activity

* @param permission

* @return

*/public static boolean checkselfpermission(activity activity, string permission)

/*** 日曆

* @param activity

* @param requestcode

*/public static void requestpermissioncalendar(activity activity,int requestcode), request_code_read_calendar);

} else , requestcode);}}

}/**

* 照相

* @param activity

* @param requestcode

*/public static void requestpermissioncamera(activity activity,int requestcode), request_code_camera);

} else , requestcode);}}

}/**

* 聯絡人

* @param activity

* @param requestcode

*/public static void requestpermissioncontacts(activity activity,int requestcode), request_code_read_contacts);

} else , requestcode);}}

}/**

* 定位

* @param activity

* @param requestcode

*/public static void requestpermissionlocation(activity activity,int requestcode), request_code_access_coarse_location);

} else , requestcode);}}

}/**

* 錄音

* @param activity

* @param requestcode

*/public static void requestpermissionmicrophone(activity activity,int requestcode), request_code_record_audio);

} else , requestcode);}}

}/**

* 感測器

* @param activity

* @param requestcode

*/public static void requestpermissionsensors(activity activity,int requestcode), request_code_body_sensors);

} else , requestcode);}}

}/**

* 簡訊

* @param activity

* @param requestcode

*/public static void requestpermissionsms(activity activity,int requestcode), request_code_send_sms);

} else , requestcode);}}

}/**

* 儲存

* @param activity

* @param requestcode

*/public static void requestpermissionstorage(activity activity,int requestcode), request_code_read_external_storage);

} else , requestcode);}}

}/**

* ** 有關,包括read_phone_state /call_phone /read_call_log/wrtite_call_log/add_voicemail/use_sip/process_outgoing_calls

* @param activity

* @param requestcode

*/public static void requestpermissionphone(activity activity,int requestcode), request_code_call_phone);

} else , requestcode);}}

}}

在下一部分將描述專案中實際處理的情況以及對比京東和**的處理方案。

Linux 許可權介紹(一)

ls l中顯示的內容如下 rw r r 1 hpcguest externals 0 mar 21 17 53 abc0 9位說明 1 第0位確定檔案型別 d c b 2 第1 3位確定所有者 該檔案的所有者 擁有該檔案的許可權 user 3 第4 6位確定所屬組 同使用者組的 擁有該檔案的許可權 ...

(一)許可權管理系統介紹

為什麼需要許可權管理 一 安全性 誤操作 人為破壞 資料洩露等 二 資料隔離 不同的許可權能看到及操作不同的資料 三 明確職責 運營 客服等不同角色,leader和dev等不同級別 許可權管理核心 一 使用者 許可權 人員少,功能固定,或者特別簡單的系統 二 rbac role based acce...

shiro 一 許可權控制介紹

只要有使用者參與的系統一般都要有許可權管理,許可權管理實現對使用者訪問系統的控制,按照安全規則或者安全策略控制使用者可以訪問而且只能訪問自己被授權的資源。許可權管理包括使用者認證和授權兩部分。shiro也是基於此來進行設計實現的 使用者認證一般流程如下 subject 主體,理解為使用者,可能是程式...