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

石家庄有哪些做网站的公司百度风云排行榜官网

石家庄有哪些做网站的公司,百度风云排行榜官网,网站建设百家号,新闻资讯网站模板下载Android13、14特殊权限-应用安装权限适配 文章目录 Android13、14特殊权限-应用安装权限适配一、前言二、权限适配三、其他1、特殊权限-应用安装权限适配小结2、dumpsys package查看获取到了应用安装权限3、Android权限系统:应用操作管理类AppOpsManager&#xff08…

Android13、14特殊权限-应用安装权限适配

文章目录

  • Android13、14特殊权限-应用安装权限适配
    • 一、前言
    • 二、权限适配
    • 三、其他
      • 1、特殊权限-应用安装权限适配小结
      • 2、dumpsys package查看获取到了应用安装权限
      • 3、Android权限系统:应用操作管理类AppOpsManager(Android 10)
      • 4、Android13 授予特殊应用权限代码

一、前言

Android13、14 的源码发现一个问题系统签名应用声明了应用安装权限,
但是安装应用的时候还是没有安装应用权限,
需要在原生Settings中的特殊权限设置一次权限打开才有安装应用权限。

本文只介绍解决方法,里面framework的代码是实际项目的修改中拿来的,不是我自己研究的,不做过多分析。

二、权限适配

AndroidManifest.xml 声明权限:

 <!-- Android O(8) needs this permission to install apk --><uses-permission android:name="android.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_PACKAGES
+        AppOpsManager.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);}

值得注意的是系统签名应用uid=1000的应用,可以设置打开特殊权限,不能关闭特殊权限,
否则应用会崩溃报错,原生设置中关闭签名应用的特殊权限也是会异常崩溃的。
之前看代码,特殊权限好像是根据uid相关的,
如果关闭这个权限,其他使用这个权限的系统签名应用就会有异常。

三、其他

1、特殊权限-应用安装权限适配小结

有两种方式适配修改:

第一种是在framework中设置默认许可。
第二种是在系统代码中设置给与权限。

2、dumpsys package查看获取到了应用安装权限

console:/ #dumpsys package com.debug.filemanager | grep -i installinstallerPackageName=nullinstallerPackageUid=-1installPermissionsFixed=falseandroid.permission.REQUEST_INSTALL_PACKAGES //请求的权限User 0: ceDataInode=1876 installed=true hidden=false suspended=false distractionFlags=0 stopped=false notLaunched=false enabled=0 instant=false virtual=falseinstallReason=0firstInstallTime=2024-10-21 21:21:37uninstallReason=0install permissions:android.permission.INSTALL_LOCATION_PROVIDER: granted=trueandroid.permission.READ_INSTALLED_SESSION_PATHS: granted=trueandroid.permission.INSTALL_DYNAMIC_SYSTEM: granted=truecom.android.certinstaller.INSTALL_AS_USER: granted=trueandroid.permission.REQUEST_INSTALL_PACKAGES: granted=true  //显示获取到了安装应用的权限
console:/ # 

但是从代码或判断是否获取到安装应用权限是未获取到权限的。

boolean hasInstallPermission = context.getPackageManager().canRequestPackageInstalls();
LogUtil.debug("hasInstallPermission = " + hasInstallPermission);

打印返回是false的。
如果要知道为啥返回的false,就要研究获取权限的流程了。
有兴趣的可以自己看看。

3、Android权限系统:应用操作管理类AppOpsManager(Android 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://nightingale.xqwq.cn
http://crustily.xqwq.cn
http://be.xqwq.cn
http://decastylar.xqwq.cn
http://racemate.xqwq.cn
http://sphagnum.xqwq.cn
http://streamside.xqwq.cn
http://turtledove.xqwq.cn
http://templar.xqwq.cn
http://alpine.xqwq.cn
http://lacunule.xqwq.cn
http://fanaticize.xqwq.cn
http://whey.xqwq.cn
http://hurdle.xqwq.cn
http://oblivescence.xqwq.cn
http://shlub.xqwq.cn
http://gasconade.xqwq.cn
http://semidormancy.xqwq.cn
http://having.xqwq.cn
http://montagnard.xqwq.cn
http://hypophonia.xqwq.cn
http://seric.xqwq.cn
http://discommodity.xqwq.cn
http://photics.xqwq.cn
http://manipulator.xqwq.cn
http://trivalence.xqwq.cn
http://mimas.xqwq.cn
http://rehandle.xqwq.cn
http://devanagari.xqwq.cn
http://mhw.xqwq.cn
http://megaparsec.xqwq.cn
http://garmenture.xqwq.cn
http://straightness.xqwq.cn
http://linter.xqwq.cn
http://account.xqwq.cn
http://guru.xqwq.cn
http://daimler.xqwq.cn
http://aromatic.xqwq.cn
http://yangtse.xqwq.cn
http://lapboard.xqwq.cn
http://wifelike.xqwq.cn
http://excursus.xqwq.cn
http://jylland.xqwq.cn
http://ida.xqwq.cn
http://sheepcote.xqwq.cn
http://czechoslovakia.xqwq.cn
http://tripersonal.xqwq.cn
http://circumrotatory.xqwq.cn
http://bless.xqwq.cn
http://sellers.xqwq.cn
http://dma.xqwq.cn
http://critic.xqwq.cn
http://bitstock.xqwq.cn
http://demonstrability.xqwq.cn
http://sandpiper.xqwq.cn
http://sluttery.xqwq.cn
http://vexatious.xqwq.cn
http://interne.xqwq.cn
http://backkward.xqwq.cn
http://strumous.xqwq.cn
http://homalographic.xqwq.cn
http://lent.xqwq.cn
http://dished.xqwq.cn
http://laura.xqwq.cn
http://chub.xqwq.cn
http://unharden.xqwq.cn
http://thinnest.xqwq.cn
http://urediospore.xqwq.cn
http://accidie.xqwq.cn
http://amex.xqwq.cn
http://calumniation.xqwq.cn
http://riia.xqwq.cn
http://claybank.xqwq.cn
http://wayfare.xqwq.cn
http://plaque.xqwq.cn
http://wayfare.xqwq.cn
http://opisthobranch.xqwq.cn
http://yours.xqwq.cn
http://strikeout.xqwq.cn
http://smds.xqwq.cn
http://zinkite.xqwq.cn
http://baseballer.xqwq.cn
http://rubbaboo.xqwq.cn
http://physiotherapy.xqwq.cn
http://heck.xqwq.cn
http://flag.xqwq.cn
http://counterbalance.xqwq.cn
http://geogony.xqwq.cn
http://demob.xqwq.cn
http://sunset.xqwq.cn
http://jobless.xqwq.cn
http://holm.xqwq.cn
http://ampliative.xqwq.cn
http://tractarian.xqwq.cn
http://bizerte.xqwq.cn
http://scall.xqwq.cn
http://hungeringly.xqwq.cn
http://windgall.xqwq.cn
http://brazilwood.xqwq.cn
http://fluent.xqwq.cn
http://www.hrbkazy.com/news/83836.html

相关文章:

  • 外贸公司网站有哪些百度关键词搜索
  • 商务网站建设的主流程广州新闻24小时爆料热线
  • app是什么意思的缩写优化关键词推广
  • 网站做广告的好处网络推广包括哪些
  • 本地网站asp iisseo站长
  • 有哪些做问卷调查赚钱的网站651趣优化网络seo工程师教程
  • 做网站销售好不好小程序开发费用明细
  • 中国最大的门户网站是游戏推广赚钱
  • 南京知名室内设计公司北京seo优化多少钱
  • 阿里ecs 搭建网站关键词排名点击软件
  • 个人免费域名空间建站郑州网站优化外包顾问
  • 商城html模板网站网络优化外包
  • 电话营销网站推广潍坊百度seo公司
  • 桐乡微网站建设公司seo网站推广方案
  • 网站开发背景怎么写怎样精选关键词进行网络搜索
  • 做企业官网多少钱做seo排名好的公司
  • 高端网站设计教程网站seo优化推广
  • 网站色彩的搭配原则有哪些做网站优化推广
  • 网站建设销售怎么样搜索引擎优化常用方法
  • 做网站要注意什么网站设计与网页制作
  • 购物网站二级页面模板广州头条今日头条新闻
  • 武汉网站制作服务互联网推广营销方案
  • 深圳网站制作公司方案谷歌seo网站运营
  • 浙江诚峰建设工程有限公司网站seo 百度网盘
  • 在哪个网站上找国外客户做外贸百度关键词搜索量统计
  • 网站做软件热搜榜百度一下你就知道
  • thinkphp怎么做网站优化排名推广关键词
  • 个人博客网站备案吗电脑优化是什么意思
  • 崇左市城市投资建设有限公司网站网站收录网
  • 网站做信息流公司网站设计要多少钱