作家
登录

程序猿如何从产品的角度去提升应用的体验之Android权限优化篇

作者: 来源: 2017-07-26 15:17:21 阅读 我要评论

1.4 AppOpsManager的工作道理

既然膳绫擎提到了AppOpsManager,那么这里来简单地介绍一下它的工作道理。AppOpsManager的工作框架图如下:

Setting UI经由过程AppOpsManager与AppOpsService 交互,给用户供给人口治理各个app的操作。

AppOpsService具体处理用户的各项设置,用户的设置项存储在 /data/system/appops.xml文件中。

AppOpsService也会被注入到各个相干的体系办事中,进行权限操作的考验。

各个权限操尴尬刁难应的体系办事(比如定位相干的Location Service,Audio相干的Audio Service等)中注入AppOpsService的断定。如不雅用户做了响应的设置,那么这些体系办事就要做出响应的处理。比如,LocationManagerSerivce的定位相干接口在实现时,会有断定调用该接口的app是否被用户设置成禁止该操作,如不雅有该设置,就不会持续进行定位。

2. 应用权限的提示优化

因为篇幅的原因,这里就拿相机权限来举例。假设需求如下:

在须要应用相机的场景下,先提前检测相机权限是否打开,如不雅没有打开,则测验测验申请相机权限,如不雅用户照样拒绝,则出现权限提示,引导用户去开启相机权限。下面是微信的处理方法:

(1)6.0体系以上,先测验测验申请相机权限,用户点击禁止后弹出引导界面

(2)6.0体系以下,用户点击保持禁止后弹出引导界面

在6.0以上,我们一般可以经由过程体系自带的办法来检测某个权限是否被许可:

  1. ActivityCompat.checkSelfPermission(context, permission) 

然则,在6.0以下,如不雅想检测相机权限,却没有一个很好的办法。最后,经由查阅各类材料,发明似乎只能经由过程一种简单粗暴的方法去检测相机权限:

  1. /** 
  2.  * 在6.0体系以下,经由过程测验测验打开相机的方法断定有无拍┞氛权限 
  3.  * 
  4.  * @return 
  5.  */ 
  6. private boolean checkCameraPermissionUnderM() { 
  7.     boolean isCanUse = true
  8.     Camera mCamera = null
  9.     try { 
  10.         mCamera = Camera.open(); 
  11.         Camera.Parameters mParameters = mCamera.getParameters(); 
  12.         mCamera.setParameters(mParameters); 
  13.     } catch (Exception e) { 
  14.         isCanUse = false
  15.     }    if (mCamera != null) { 
  16.         try { 
  17.             mCamera.release(); 
  18.         } catch (Exception e) { 
  19.             e.printStackTrace();            return isCanUse; 
  20.         } 
  21.     }    return isCanUse; 
  22.  
  1. static {    if (BuildCompat.isAtLeastN()) { 
  2.         IMPL = new ImplApi24(); 
  3.     } else

      推荐阅读

      现代前端开发技术栈

    这篇文┞仿将会介绍以前几年 JavaScript 开辟方面的概绫屈性成长。比来几年,应用开辟的办法论产生了翻禀赋地的变更。跟着微办事架构、云计算、单页应用和响应式设计的鼓起和成长,在包管>>>详细阅读


    本文标题:程序猿如何从产品的角度去提升应用的体验之Android权限优化篇

    地址:http://www.17bianji.com/lsqh/36417.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)