Android7.0,8.0相机权限-8.0安装应用权限-11.0安装应用权限
1 --Android 7.0,8.0手机相机权限没有直接崩溃,*切记动态检查权限
public void request(){if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)!= PackageManager.PERMISSION_GRANTED){ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA}, 1);return;}}
--权限申请结果查看
@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults){switch (requestCode){case 1:if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){getPicFromCamera();}else{Toast.makeText(this, "没有相机权限!\n请接收权限申请或前往设置添加权限!", Toast.LENGTH_SHORT).show();}break;default:}}
**** 7.0,8.0 打开相机
---1清单文件配置provide 与activity同级
<?xml version="1.0" encoding="utf-8"?>
<paths><external-path name="rc_external_path" path="."/>
</paths>
<providerandroid:name="android.support.v4.content.FileProvider"android:authorities="com.zjxnkj.countrysidecommunity.FileProvider"android:exported="false"android:grantUriPermissions="true"tools:replace="android:authorities"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/rc_file_path"tools:replace="android:resource" /></provider>
--2 代码区别
private File createImageFile() throws IOException {// Create an image file nameString timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.ENGLISH).format(new Date());String imageFileName = "JPEG_" + timeStamp + ".jpg";File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);if (!storageDir.exists()) {if (!storageDir.mkdir()) {Log.e("TAG", "Throwing Errors....");throw new IOException();}}File image = new File(storageDir, imageFileName);return image;}/*** 从相机获取图片*/private void getPicFromCamera() {if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)!= PackageManager.PERMISSION_GRANTED){ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA}, 1);return;}//跳转到调用系统相机Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//用于保存调用相机拍照后所生成的文件// new File(Environment.getExternalStorageDirectory().getPath(), System.currentTimeMillis() + ".jpg");try {tempFile =createImageFile();} catch (IOException e) {e.printStackTrace();}// Ensure that there's a camera activity to handle the intentif (intent.resolveActivity(getPackageManager()) != null) {Uri photoFile;if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {String authority = "com.zjxnkj.countrysidecommunity.FileProvider";photoFile = FileProvider.getUriForFile(getApplicationContext(), authority, tempFile);} else {photoFile = Uri.fromFile(tempFile);}// Continue only if the File was successfully createdif (photoFile != null) {intent.putExtra(MediaStore.EXTRA_OUTPUT, photoFile);}}PackageManager packageManager = getPackageManager();if (packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {startActivityForResult(intent, CAMERA_REQUEST_CODE);}else {ToastUtils.showToast(getApplicationContext(),"请打开相机权限");}}
2 Android8.0需要申请安装应用权限 读取sd卡和安装应用
public void request(){if (Build.VERSION.SDK_INT >= 26) {boolean b = getPackageManager().canRequestPackageInstalls();if (b) {String[] perms = {android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_EXTERNAL_STORAGE};// String[] perms = {android.Manifest.permission.CAMERA, android.Manifest.permission.ACCESS_FINE_LOCATION};requestPermissions(perms,"请求访问SD卡");
// mMainPresenter.installApk();} else {//请求安装未知应用来源的权限String[] perms = {android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_EXTERNAL_STORAGE,android.Manifest.permission.REQUEST_INSTALL_PACKAGES};// String[] perms = {android.Manifest.permission.CAMERA, android.Manifest.permission.ACCESS_FINE_LOCATION};requestPermissions(perms,"请求访问SD卡,安装应用");}} else {String[] perms = {android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_EXTERNAL_STORAGE};// String[] perms = {android.Manifest.permission.CAMERA, android.Manifest.permission.ACCESS_FINE_LOCATION};requestPermissions(perms,"请求访问SD卡");}}
---结果重写 onPermissionsGranted
@Overridepublic void onPermissionsGranted(int requestCode, List<String> perms) {updateManager.installApk();}
@Overridepublic void onPermissionsDenied(int requestCode, List<String> perms) {if (perms.size() > 0 && Manifest.permission.REQUEST_INSTALL_PACKAGES.equals(perms.get(0))) {// 引导用户手动开启安装权限ToastUtils.showToast(getApplicationContext(), "申请安装应用权限失败,\n请选择村知书打开安装权限", Toast.LENGTH_LONG);Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);startActivityForResult(intent, GET_UNKNOWN_APP_SOURCES);} else {requestPermissions();}}
3. Android11安装apk(授予权限系统也会杀死)
Android 11上发生了变化,安装APK的应用会被强制关闭。(授予权限也会强制关闭应用)
当你再次打开之前的应用时,会发现它已经完全被重新加载,可能会出现丢失输入或其他尚未缓存的数据,因为应用已经被系统杀死了。Android通常只有在用户撤销权限时才会强行退出应用,以阻止应用被破解,而不是在用户授予权限时强行退出。
IT之家了解到,谷歌似乎对此相当淡定,最初只表示“这实际上是在按原定计划工作”。但开发者表示这可能会破坏那些不希望在操作过程中被强行停止的应用,谷歌才提供了进一步的评论,明确表示这一变化与新的Scoped Storage强制分区存储文件管理有关。虽然Scoped Storage将有利于安全和隐私,但新系统显然会带来比预期的更大的变化。
Android7.0,8.0相机权限-8.0安装应用权限-11.0安装应用权限相关推荐
- win10下安装tensorflow-gpu==1.11.0的详细教程
20200313 更新 当前配置,用了3个月了,运行良好 系统:win10 显卡:Nvidia 1080Ti python:3.6.8 CUDA:9.0.176 cuDNN:7.0.5 tensorf ...
- centos 6.8 编译安装git 2.11.0
系统环境:CentOS release 6.8 (Final) 默认Git :1.7.1 需求git :2.11 卸载centos自带的git:yum remove git -y 下载git-2.11 ...
- Mac Mojave10.14安装vmvare Fusion 11.0.0 win8 镜像
一.下载VMware Fusion 11.0.0 官网地址: https://my.vmware.com/group/vmware/details?downloadGroup=FUS-1100& ...
- Windows10下Vmware15.5虚拟机安装macOS BigSur 11.0(20A4299v).CDR镜像
macOS BigSur 11.0(20A4299v).cdr 天翼云: https://cloud.189.cn/t/biaYBvABBFRr. (访问码:tg8y) 百度云:链接: https:/ ...
- android 6.0.1 z3相机,索尼Z2/Z3已可升级Android6.0.1:国行一边哭去
[TechWeb报道]谷歌Android 6.0.1系统已经发布了一段时间,但大部分手机厂商在近期才陆续跟进,比如索尼在本月初才对自家的Xperia系列手机推送该系统.据国外媒体报道,索 尼近日又更新 ...
- Android 11.0 无源码apk授予QUERY_ALL_PACKAGES权限
目录 1.概述 2.Android 11.0 无源码apk授予QUERY_ALL_PACKAGES权限的核心类 3.Android 11.0 无源码apk授予QUERY_ALL_
- Ubuntu20.04下安装 NVIDIADriver-460、CUDA-10.0、cuDNN、tensorflow、pytorch
Ubuntu下安装 NVIDIADriver.CUDA.cuDNN.tensorflow.pytorch 1.安装NVIDIA驱动 首先,检测你的NVIDIA显卡型号和推荐的驱动程序的模型. ubun ...
- 试驾 Citus 11.0 beta
https://www.citusdata.com/blog/2022/03/26/test-drive-citus-11-beta-for-postgres/ Citus 11.0 beta 的最大 ...
- Flink 1.11.0 发布,有哪些值得关注的新特性?
简介:7 月 7 日,Flink 1.11.0 正式发布.历时近 4 个月,Flink 在生态.易用性.生产可用性.稳定性等方面都进行了增强和改善.Apache Flink PMC.阿里巴巴高级技术专 ...
- 在LINUX下安装 Sybase ASE 11.0.3.3
在LINUX下安装 Sybase ASE 11.0.3.3 从Sybase的站点上下载两个软件包,笔者下载了11.0.3.3版本,Sybase目前已经推出了ASE11.9.2,由 于11.9.2软件包 ...
最新文章
- Network | sk_buff
- 免费在线制图神器!内置13个类别上百个模板,不上水印支持中文版,GitHub标星已破1万2...
- sql注入及mybatis防止sql注入
- class ts 扩展方法_JUnit 5自定义扩展
- SQL查询最大值,返回整行数据
- MOCTF-Web-我想要钱
- numpy zeros矩阵_零矩阵使用numpy.zeros()| 使用Python的线性代数
- 持续交付2.0 pdf_半导体检测设备厂商Advantest与美最大半导体数据分析商PDF展开合作...
- 雪城大学信息安全讲义 七、格式化字符串漏洞
- java persistence.xml_java – 找不到persistence.xml
- V神:你所理解的“去中心化”不一定准确
- cmake相关:sudo make install后的卸载
- 软考-网络工程师复习资料
- 深度学习之注意力机制(Attention Mechanism)和Seq2Seq
- winform中ComboBox下拉框控件的动态数据填充
- java while语句打印三角形_java基础之五小节带你走进java流程控制—多重循环
- flex布局遇到white-space失效问题
- fat32 linux 打包工具_自己封装系统(雨林木风一键系统封装工具V3.65)
- 一文搞懂谐波、纹波、噪声
- postgis版本升级
热门文章
- 区块链包装是什么,区块链项目包装又是怎么做的,近距离接触大咖为您一一解读
- 综述如何开展代码审计
- [技术] 超简单解决win8.1不能玩战地3的问题,不用改区域了。(狂喜!2013-10-5更新)...
- fifa足球经理10java_《FIFA足球经理2010》经理模式详解
- 【PS】绘制金属质感圆按钮
- 虚拟网红搅动KOL生态:“假人”如何实现真带货?
- 百款蓝牙耳机试用测评:这五款高性价比蓝牙耳机更值得入手
- stream流操作,对List集合进行分组、求和去重
- python禅语_有意思的Python之禅——与编程有关,更与人生有关
- 【漏洞复现】Apache Shiro 反序列化漏洞