色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Android 7.0 運(yùn)行時(shí)權(quán)限彈窗問(wèn)題的解決

瀏覽:131日期:2022-09-26 08:21:53

Android 7.0系統(tǒng)在運(yùn)行應(yīng)用的時(shí)候,對(duì)權(quán)限做了諸多限制,normal, dangerous, signature, signatureOrSystem ,取決于保護(hù)級(jí)別,在確定是否授予權(quán)限時(shí),系統(tǒng)可能采取不同的操作。

normal 表示權(quán)限是低風(fēng)險(xiǎn)的,不會(huì)對(duì)系統(tǒng)、用戶或其他應(yīng)用程序造成危害; dangerous 表示權(quán)限是高風(fēng)險(xiǎn)的,系統(tǒng)將可能要求用戶輸入相關(guān)信息,才會(huì)授予此權(quán)限; signature 表示只有當(dāng)應(yīng)用程序所用數(shù)字簽名與聲明引權(quán)限的應(yīng)用程序所用數(shù)字簽名相同時(shí),才能將權(quán)限授給它; signatureOrSystem 表示將權(quán)限授給具有相同數(shù)字簽名的應(yīng)用程序或android 包類。這一保護(hù)級(jí)別適和于非常特殊的情況,比如多個(gè)供應(yīng)商需要通過(guò)系統(tǒng)映像共享功能時(shí)

運(yùn)行時(shí)權(quán)限彈窗問(wèn)題是很多系統(tǒng)定制的客戶要求屏蔽的,一直以來(lái)沒(méi)有特別好的方法,下面我分享一下我自己驗(yàn)證可行的方案

方案1,修改frameworks/base/services/core/java/com/android/server/pm/PackageManagerService和frameworks/base/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy文件,PackageManagerService文件修改代碼如下:

@Override public void systemReady() { ... synchronized (mPackages) { ... for (int userId : UserManagerService.getInstance().getUserIds()) {//if (!mSettings.areDefaultRuntimePermissionsGrantedLPr(userId)) {//注釋掉這個(gè)判斷 grantPermissionsUserIds = ArrayUtils.appendInt( grantPermissionsUserIds, userId);//} } }

DefaultPermissionGrantPolicy文件修改代碼如下:

private void grantPermissionsToSysComponentsAndPrivApps(int userId) { Log.i(TAG, 'Granting permissions to platform components for user ' + userId); synchronized (mService.mPackages) { for (PackageParser.Package pkg : mService.mPackages.values()) { // if (!isSysComponentOrPersistentPlatformSignedPrivAppLPr(pkg) //刪掉isSysComponentOrPersistentPlatformSignedPrivAppLPr判斷 if(!doesPackageSupportRuntimePermissions(pkg) || pkg.requestedPermissions.isEmpty()) { continue;}Set<String> permissions = new ArraySet<>();final int permissionCount = pkg.requestedPermissions.size();for (int i = 0; i < permissionCount; i++) { String permission = pkg.requestedPermissions.get(i); BasePermission bp = mService.mSettings.mPermissions.get(permission); if (bp != null && bp.isRuntime()) { permissions.add(permission); }}if (!permissions.isEmpty()) { grantRuntimePermissionsLPw(pkg, permissions, true, userId);} } } }

簡(jiǎn)單說(shuō)明下這個(gè)方案的修改原理,在PMS的systemReady方法中會(huì)遍歷所有擁有默認(rèn)運(yùn)行時(shí)權(quán)限應(yīng)用,通過(guò)遍歷它們的UserId來(lái)賦予權(quán)限,注釋掉判斷是否為擁有運(yùn)行時(shí)權(quán)限的應(yīng)用方法后,會(huì)遍歷所有應(yīng)用,遍歷應(yīng)用且賦予權(quán)限的操作是在DefaultPermissionGrantPolicy中g(shù)rantPermissionsToSysComponentsAndPrivApps方法,注釋掉判斷簽名應(yīng)用和系統(tǒng)應(yīng)用的方法,普通應(yīng)用也可以獲取所有運(yùn)行時(shí)權(quán)限,這樣所有應(yīng)用都不會(huì)有運(yùn)行時(shí)權(quán)限的彈窗了。

方案2,只修改frameworks/base/services/core/java/com/android/server/pm/PackageManagerService文件,修改grantPermissionsLPw方法,代碼如下:

private void grantPermissionsLPw(PackageParser.Package pkg, boolean replace, String packageOfInterest) { ... /*add for grant thirdparty app permssion S*/ final String thirdPkgName = SystemProperties.get('persist.thirdparty.packagenames',''); if(isSystemApp(pkg) || pkg.packageName.contains(thirdPkgName)){//xxx為包名 final int permCount = pkg.requestedPermissions.size(); for(int i = 0;i < permCount;i++){ final String name = pkg.requestedPermissions.get(i); final BasePermission bp = mSettings.mPermissions.get(name); if(bp != null && permissionsState.grantInstallPermission(bp) != PermissionsState.PERMISSION_OPERATION_FAILURE){changeInstallPermission = true; } } /*add for grant thirdparty app permission E*/ permissionsState.setGlobalGids(mGlobalGids); ... }

簡(jiǎn)單解釋下第二中方案的思路,PMS在應(yīng)用安裝的時(shí)候會(huì)根據(jù)應(yīng)用是否為簽名應(yīng)用、系統(tǒng)應(yīng)用或三方應(yīng)用來(lái)更新權(quán)限,這里可以做成白名單的形式,目前通過(guò)SystemProperties來(lái)獲取三方包名可以通過(guò)adb或者串口來(lái)測(cè)試三方應(yīng)用權(quán)限是否可以正常獲取。兩種方案大家可以自由選擇。

到此這篇關(guān)于Android 7.0 運(yùn)行時(shí)權(quán)限彈窗問(wèn)題的解決的文章就介紹到這了,更多相關(guān)Android7.0 權(quán)限彈窗 內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: xh98hx国产在线视频 | 手机看片1024精品国产 | 久久视频免费 | 91高清国产经典在线观看 | 91免费永久国产在线观看 | 高清不卡一区二区三区 | 久久中文字幕综合不卡一二区 | 国产原创视频在线 | 欧美一级第一免费高清 | 欧美一级特毛片 | 一级aaaaaa毛片免费同男同女 | 亚洲在线中文 | 国产午夜爽爽窝窝在线观看 | 欧美一级片免费观看 | 青青草国产免费久久久91 | 亚洲综合视频在线观看 | 91精品一区二区三区在线观看 | 手机在线看片福利 | 四虎免费大片aⅴ入口 | 色偷偷亚洲偷自拍 | 精品成人免费一区二区在线播放 | 亚洲成人黄色网 | 国产高清视频免费在线观看 | 久久黄色一级视频 | 免费乱码中文字幕网站 | 久久一本一区二区三区 | 国产成人精品一区二区视频 | 成人在线免费观看 | 欧美精品网站 | 免费91最新地址永久入口 | 亚洲日本aⅴ片在线观看香蕉 | 日韩高清在线播放不卡 | 毛片在线免费视频 | 欧美日本在线一区二区三区 | 人碰人操| 岛国大片在线播放高清 | 久久爱com | 在线 中文字幕 日韩 欧美 | 久久国产精品1区2区3区网页 | 成人五级毛片免费播放 | 国产精品欧美日韩 |