当前位置: 首页 > news >正文

做化妆品的网站有哪些湛江网站建设的软件

做化妆品的网站有哪些,湛江网站建设的软件,单机传奇手游无需联网,烟台微信网站建设Android13、14特殊权限-应用安装权限适配 文章目录 Android13、14特殊权限-应用安装权限适配一、前言二、权限适配三、其他1、特殊权限-应用安装权限适配小结2、dumpsys package查看获取到了应用安装权限3、Android权限系统#xff1a;应用操作管理类AppOpsManager#xff08…Android13、14特殊权限-应用安装权限适配 文章目录 Android13、14特殊权限-应用安装权限适配一、前言二、权限适配三、其他1、特殊权限-应用安装权限适配小结2、dumpsys package查看获取到了应用安装权限3、Android权限系统应用操作管理类AppOpsManagerAndroid 104、Android13 授予特殊应用权限代码 一、前言 Android13、14 的源码发现一个问题系统签名应用声明了应用安装权限 但是安装应用的时候还是没有安装应用权限 需要在原生Settings中的特殊权限设置一次权限打开才有安装应用权限。 本文只介绍解决方法里面framework的代码是实际项目的修改中拿来的不是我自己研究的不做过多分析。 二、权限适配 AndroidManifest.xml 声明权限 !-- Android O(8) needs this permission to install apk --uses-permission android:nameandroid.permission.REQUEST_INSTALL_PACKAGES / Android13 UnsupportedAppUsage private static String[] sOpPerms new String[] {android.Manifest.permission.ACCESS_COARSE_LOCATION,android.Manifest.permission.ACCESS_FINE_LOCATION,...AppOpsManager.MODE_ALLOWED, // READ_PHONE_NUMBERS - AppOpsManager.MODE_DEFAULT, // REQUEST_INSTALL_PACKAGESAppOpsManager.MODE_ALLOWED, // REQUEST_INSTALL_PACKAGESAppOpsManager.MODE_ALLOWED, // PICTURE_IN_PICTUREAppOpsManager.MODE_DEFAULT, // INSTANT_APP_START_FOREGROUND... }可以看到安装应用权限默认不是 MODE_ALLOWED允许状态,设置成允许状态就行。 Android14 static final AppOpInfo[] sAppOpInfos new AppOpInfo[]{...new AppOpInfo.Builder(OP_READ_PHONE_NUMBERS, OPSTR_READ_PHONE_NUMBERS, READ_PHONE_NUMBERS).setPermission(Manifest.permission.READ_PHONE_NUMBERS).setDefaultMode(AppOpsManager.MODE_ALLOWED).build(),new AppOpInfo.Builder(OP_REQUEST_INSTALL_PACKAGES, OPSTR_REQUEST_INSTALL_PACKAGES,REQUEST_INSTALL_PACKAGES).setSwitchCode(OP_REQUEST_INSTALL_PACKAGES)- .setPermission(Manifest.permission.REQUEST_INSTALL_PACKAGES).build(), .setPermission(Manifest.permission.REQUEST_INSTALL_PACKAGES) .setDefaultMode(AppOpsManager.MODE_ALLOWED).build(),...}Android14 把app权限信息封装成AppOpInfo对象了。 从上面代码可以看到安装应用的权限未设置默认模式添加默认许可即可。 这里的默认许可也不是所有应用都需要 而是拥有了安装应用这个特殊权限的应用才默认许可安装应用。 第二种方法 private void initOpsPermission(Context context) {try {setPackageAppOpsPermission(context, com.android.bluetooth, AppOpsManager.OPSTR_SYSTEM_ALERT_WINDOW);setPackageAppOpsPermission(context, com.skg.filemanager, AppOpsManager.OPSTR_REQUEST_INSTALL_PACKAGES);} catch (Exception e) {e.printStackTrace();DebugLog.debug(error e.getMessage());}}//设置特殊权限通过private void setPackageAppOpsPermission(Context context, String packageName, String opsString) {AppOpsManager mAppOps (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);PackageManager manager context.getPackageManager();int uid 1;try {ApplicationInfo packageInfo manager.getApplicationInfo(packageName, 0);uid packageInfo.uid;} catch (Exception e) {e.printStackTrace();return;}DebugLog.debug(uid uid);mAppOps.setUidMode(opsString, uid, AppOpsManager.MODE_ALLOWED);} 值得注意的是系统签名应用uid1000的应用可以设置打开特殊权限不能关闭特殊权限 否则应用会崩溃报错原生设置中关闭签名应用的特殊权限也是会异常崩溃的。 之前看代码特殊权限好像是根据uid相关的 如果关闭这个权限其他使用这个权限的系统签名应用就会有异常。 三、其他 1、特殊权限-应用安装权限适配小结 有两种方式适配修改: 第一种是在framework中设置默认许可。 第二种是在系统代码中设置给与权限。2、dumpsys package查看获取到了应用安装权限 console:/ #dumpsys package com.debug.filemanager | grep -i installinstallerPackageNamenullinstallerPackageUid-1installPermissionsFixedfalseandroid.permission.REQUEST_INSTALL_PACKAGES //请求的权限User 0: ceDataInode1876 installedtrue hiddenfalse suspendedfalse distractionFlags0 stoppedfalse notLaunchedfalse enabled0 instantfalse virtualfalseinstallReason0firstInstallTime2024-10-21 21:21:37uninstallReason0install permissions:android.permission.INSTALL_LOCATION_PROVIDER: grantedtrueandroid.permission.READ_INSTALLED_SESSION_PATHS: grantedtrueandroid.permission.INSTALL_DYNAMIC_SYSTEM: grantedtruecom.android.certinstaller.INSTALL_AS_USER: grantedtrueandroid.permission.REQUEST_INSTALL_PACKAGES: grantedtrue //显示获取到了安装应用的权限 console:/ # 但是从代码或判断是否获取到安装应用权限是未获取到权限的。 boolean hasInstallPermission context.getPackageManager().canRequestPackageInstalls(); LogUtil.debug(hasInstallPermission hasInstallPermission); 打印返回是false的。 如果要知道为啥返回的false就要研究获取权限的流程了。 有兴趣的可以自己看看。 3、Android权限系统应用操作管理类AppOpsManagerAndroid 10 AppOpsManager 是Google在Android4.3里面引进的应用程序操作权限的管理类核心实现类为AppOpsService。 Google对AppOpsManager的说明在 AppOpsManager   app op应用操作的出现比运行时权限早最初在没有出现运行时权限的时候   应用一旦被安装成功是会被一次性授予所有需要的权限的   所以限制应用权限的唯一方案是使用AppOpsManager。   但在现在app op不但覆盖了所有的运行时权限例如拍照的app op是OP_CAMERA   也有对应的运行时权限Manifest.permission.CAMERA还添加了一些没有对应运行时权限的操作例如读剪贴板的app op是OP_READ_CLIPBOARD却没有对应的运行时权限。   此外AppOpsManager提供了跟踪记录的功能以方便开发者了解系统敏感操作的访问记录   使用noteOp(String, int, String)/startOp(String, int, String)可以让系统执行记录   而使用unsafeCheckOp(String, int, String)系统不会执行记录。   noteOp/startOp/unsafeCheckOp在记录敏感操作信息的同时   还有一个返回值开发者可以根据这个返回值决定下一步操作。      返回值有 1.MODE_ALLOWED访问者可以访问该敏感操作2.MODE_IGNORED访问者不可以访问该敏感操作但是不会引发crash;3.MODE_ERRORED访问者不可以访问该敏感操作会引发crash;4.MODE_DEFAULT访问者来决定访问该敏感操作的准入规则。详细介绍 https://blog.csdn.net/Invoker123/article/details/109176511 4、Android13 授予特殊应用权限代码 Android 权限类别有啥网上很多是说有普通权限和危险权限其实是不准确的。 Android 权限分为普通权限动态权限特殊权限私有权限。 https://blog.csdn.net/wenzhi20102321/article/details/143082504
http://www.dnsts.com.cn/news/16725.html

相关文章:

  • 网站大全软件wordpress 缩略图截图
  • 专业设计企业网站金湖县建设局网站
  • 校园网站建设方案书免费的工程信息网站
  • 河北省建设厅报名网站wordpress添加加载中
  • 做网站时兼容分辨率六枝特区企业网络推广如何做
  • 公司网站介绍范文郑州的做网站公司有哪些
  • 可以和朋友合资做网站吗深圳培训公司网站建设
  • 网站内容全屏截屏怎么做wordpress+移动
  • 网站架构规划龙岗优化网站建设
  • 可以做英语阅读理解的网站西安seo盐城
  • 聊城手机网站制作中国建设银行官网开户行查询
  • 基于php技术的小型企业网站开发免费seo网站优化
  • o2o网站建设代理商广告设计与制作专业知识
  • 门户网站样式willfast优化工具下载
  • 青海省公路建设总公司网站小红书推广怎么做
  • wordpress登录网页广州百度推广排名优化
  • 大连科技网站制作衡阳市网站建设公司
  • apple网站模板射洪哪里可以做网站
  • 简述网站栏目管理wordpress 标签 图片不显示
  • 大宗商品价格查询网站做货代网站
  • 网站欢迎页面代码房产网站设计模板
  • 自问自答网站怎么做网站维护费一年多少钱
  • 做网站怎么能在百度搜索到公司形象墙设计方案
  • 网站与新媒体建设测评方案网站建设宣传软文范例
  • gta5网站建设中网页设计与制作项目教程第二版
  • 当今做网站的语言有哪些徐州市建设局交易网站
  • 做seo需要建网站吗美宜佳企业网络营销推广方式
  • 电商类网站有哪些百度推广怎么使用教程
  • 淮北做网站的公司wordpress 彩色标签
  • 电子商务网站建设的目标是常德营销型网站建设