只有编译完之后,才会出现这个文件,是自动生成的。
out/target/common/R/android/Manifest.java
/frameworks/base/core/res/AndroidManifest.xml 权限的定义在这个文件。
如果改变注释 <!-- Allows an application to access coarse (e.g., Cell-ID, WiFi) location xiayu-->
重新mmm ,则out/target/common/R/android/Manifest.java,中的相应注释也会改变。
/frameworks/base/telephony/java/com/android/internal/telephony/PhoneSubInfo.java 获取手机的制造商,id信息。每读一个内容,都要检测权限。
public String getDeviceId() {
mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE");
return mPhone.getDeviceId();
}
读电话本权限,流程图
./frameworks/base/telephony/java/com/android/internal/telephony/IccProvider.java
./frameworks/base/telephony/java/com/android/internal/telephony/IccPhoneBookInterfaceManager.java
query --> loadFromEf --> getAdnRecordsInEf --> (phone.getContext().checkCallingOrSelfPermission
frameworks/base/services/java/com/android/server/pm/PackageManagerService.java 会把pack中权限读进变量
4320 if (allowed) {4321 if (!gp.grantedPermissions.contains(perm)) {
4322 changedPermission = true;
4323 gp.grantedPermissions.add(perm);
4324 gp.gids = appendInts(gp.gids, bp.gids);
4325 } else if (!ps.haveGids) {
4326 gp.gids = appendInts(gp.gids, bp.gids);
4327 }
4328 } else {