Android N系统CTS verifier中cross profile相关测试项fail的解决方案
2016-11-16 21:48
1156 查看
测试环境简介:CTS verifier apk是对应Android N的版本。系统是Android N。
测试项名称:camera support cross profile video capture (without extra output path)
测试过程:点击该项测试时,会调用到手机中安装的相机拍摄视频。拍摄视频后返回到CTS verifier apk的界面进行视频播放。如果能够正常拍摄及播放视频,则该测试项通过;否则,该测试项fail。
测试结果:能够正常拍摄视频,但是拍摄后回到CTS verifier apk界面不能正常播放,提示“cann't play the video”。
问题分析:仔细读该测试项的名字,cross profile的意思是跨工作资料,这里的工作资料应该是指跨应用程序。用"exception"为关键词搜索发生该问题的log,可能会发现的Log有“Security Exception”、“Permission Denial”,"can't read the uri"等。这些关键词告诉我们是由于权限问题导致了视频的uri读取不了所以导致视频不能播放。
解决方案:Android N增加了应用间文件共享的权限检查,通过uri分享文件变得更加严格。我们可以想到,CTS verifier apk先是通过startActivityForResult启动了相机应用拍摄视频。而相机应用会把拍摄下来的视频的uri通过函数setResut(int
resultCode, Intent intent)返回给CTS verifier应用。这里就涉及到了跨应用的文件共享。这里会将uri数据存储到intent中。在Android N之前的系统这么写是没有问题的,而由于新增加了安全检查,如果是Content Uri,这里要在相机应用里给intent加一个flag以授予读取权限。
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
通过增加该flag,CTS verifier即可正常访问uri。该测试项也就能pass了。
上述方法只能针对Uri是Content Uri的情况,如果是File Uri,就需要用到FileProvider将File类型的Uri转换成Content Uri,再通过上述方式授予读取权限。具体转换方式网上有很多描述的文章,这里不再赘述。
感谢你的阅读,欢迎你也能访问我的网易博客。
测试项名称:camera support cross profile video capture (without extra output path)
测试过程:点击该项测试时,会调用到手机中安装的相机拍摄视频。拍摄视频后返回到CTS verifier apk的界面进行视频播放。如果能够正常拍摄及播放视频,则该测试项通过;否则,该测试项fail。
测试结果:能够正常拍摄视频,但是拍摄后回到CTS verifier apk界面不能正常播放,提示“cann't play the video”。
问题分析:仔细读该测试项的名字,cross profile的意思是跨工作资料,这里的工作资料应该是指跨应用程序。用"exception"为关键词搜索发生该问题的log,可能会发现的Log有“Security Exception”、“Permission Denial”,"can't read the uri"等。这些关键词告诉我们是由于权限问题导致了视频的uri读取不了所以导致视频不能播放。
解决方案:Android N增加了应用间文件共享的权限检查,通过uri分享文件变得更加严格。我们可以想到,CTS verifier apk先是通过startActivityForResult启动了相机应用拍摄视频。而相机应用会把拍摄下来的视频的uri通过函数setResut(int
resultCode, Intent intent)返回给CTS verifier应用。这里就涉及到了跨应用的文件共享。这里会将uri数据存储到intent中。在Android N之前的系统这么写是没有问题的,而由于新增加了安全检查,如果是Content Uri,这里要在相机应用里给intent加一个flag以授予读取权限。
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
通过增加该flag,CTS verifier即可正常访问uri。该测试项也就能pass了。
上述方法只能针对Uri是Content Uri的情况,如果是File Uri,就需要用到FileProvider将File类型的Uri转换成Content Uri,再通过上述方式授予读取权限。具体转换方式网上有很多描述的文章,这里不再赘述。
感谢你的阅读,欢迎你也能访问我的网易博客。
相关文章推荐
- 安装后新建Android出现“AndroidManifest.xml 系统找不到指定的文件”解决方案
- 找不到android系统库的解决方案
- Android 保存图片到系统及相关问题的解决方案
- mac 系统开发android,真机调试解决方案(无数的坑之后吐血总结)
- 王家林的81门一站式云计算分布式大数据&移动互联网解决方案课程第12门课程:Android系统完整训练:开发搭载Android系统的产品
- 基于android系统平台的GUI设计解决方案--inflexion
- 监听Android CTS测试项解决方案(一)
- 【转】Mac OS X下Android系统M2、华为部分手机无法连接问题之解决方案
- Mac OS X下Android系统M2、华为部分手机无法连接问题之解决方案
- android系统在虚拟机中锁屏后无响应的解决方案
- 安装后新建Android出现“AndroidManifest.xml 系统找不到指定的文件”解决方案
- Mac OS X下Android系统M2、华为部分手机无法连接问题之解决方案
- 安装后新建Android出现“AndroidManifest.xml 系统找不到指定的文件”解决方案
- 解决方案:android系统上不同分辨率的兼容问题
- Android 保存图片到系统及相关问题的解决方案
- android进不了系统解决方案
- 描述Android系统在视频播放时来电话的解决方案
- Android 保存图片到系统及相关问题的解决方案
- 王家林的81门一站式云计算分布式大数据&移动互联网解决方案课程第九门课程:Android系统移植及框架整合与维护
- 监听Android CTS测试项解决方案(一)