Android申请相机权限和读写权限实例
作者:井井帆 发布时间:2023-08-21 18:52:40
标签:Android,申请,相机,权限
开发一个相机应用,需要申请三个权限:相机、读文件、写文件。
1、在AndroidManifest.xml中添加
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
2、新建一个Permission类
public class Permission {
public static final int REQUEST_CODE = 5;
//定义三个权限
private static final String[] permission = new String[]{
Manifest.permission.CAMERA,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
};
//每个权限是否已授
public static boolean isPermissionGranted(Activity activity){
if(Build.VERSION.SDK_INT >= 23){
for(int i = 0; i < permission.length;i++) {
int checkPermission = ContextCompat.checkSelfPermission(activity,permission[i]);
/***
* checkPermission返回两个值
* 有权限: PackageManager.PERMISSION_GRANTED
* 无权限: PackageManager.PERMISSION_DENIED
*/
if(checkPermission != PackageManager.PERMISSION_GRANTED){
return false;
}
}
return true;
}else{
return true;
}
}
public static boolean checkPermission(Activity activity){
if(isPermissionGranted(activity)) {
return true;
} else {
//如果没有设置过权限许可,则弹出系统的授权窗口
ActivityCompat.requestPermissions(activity,permission,REQUEST_CODE);
return false;
}
}
}
3、在MainActivity中加入授权操作
@Override
protected void onStart() {
super.onStart();
Permission.checkPermission(this);
}
@Override
protected void onResume() {
super.onResume();
if(Permission.isPermissionGranted(this)) {
Log.i("PERMISSION","请求权限成功");
}
}
初步授权成功
4、在MainActivity中处理授权失败结果,拒绝授权则退出应用
@Override
public void onRequestPermissionsResult(
int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == Permission.REQUEST_CODE) {
for (int grantResult : grantResults) {
if (grantResult != PackageManager.PERMISSION_GRANTED) {
Log.e("Permission","授权失败!");
// 授权失败,退出应用
this.finish();
return;
}
}
}
}
效果图
来源:https://blog.csdn.net/jignjingfan/article/details/122857224
0
投稿
猜你喜欢
- 最初的声明方式在没有@property修饰的情况下,需要分别声明get、set、delete函数,然后初始化property类,将这些方法加
- 我就废话不多说啦!dpi=1 600×400dpi=21200×800dpi=31800×1200........dpi=21(21×600
- 用python写了一个简单版本的textrank,实现提取关键词的功能。import numpy as np import jieba im
- 是否曾经有过这样的经历:把一个元素置于另一个元素之上,而希望下面的那个元素成为可点击的?现在,利用css的pointer-events属性即
- 本文实例为大家分享了python模拟事件触发机制的具体代码,供大家参考,具体内容如下EventManager.py# -*- encodin
- 目录1)连接请求的变量1、max_connections2、back_log3、wait_timeout和interative_timeou
- 话不多说上代码!源代码from tkinter import *import pyttsx3class Application(Frame)
- Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形
- 一、subprocess以及常用的封装函数运行python的时候,我们都是在创建并运行一个进程。像Linux进程那样,一个进程可以fork一
- 记得上次电梯按钮讨论中有朋友提到日本的无序电梯,我没有太明白意思。除了各位大师提出的无厘头方案,也有不少超前的创意,好多都值得继续思考和探索
- 在家无聊,线代和高数看不懂,整点事情干,就准备预定回学校的高铁票,于是就有了这个文章准备工作1.pip安装chromediver,当然也可以
- 1.事件简介事件(event)是MySQL在相应的时刻调用的过程式数据库对象。一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理
- 官网上关于组件继承分为两大类,全局组件和局部组件。无论哪种方式,最核心的是创建组件,然后根据场景不同注册组件。有一点要牢记,“Vue.js
- 写在前面SciPy的optimize模块提供了许多数值优化算法,下面对其中的一些记录。非线性方程组求解SciPy中对非线性方程组求解是fsl
- 开始刷leetcode算法题 今天做的是“买卖股票的最佳时机”题目要求 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计
- 15分钟学会vue项目改造成SSRPs:网上看了好多服务器渲染的例子,基本都是从0开始的,用Nuxt或者vue官网推荐的ssr方案(vue-
- 前言互斥锁是在并发程序中对共享资源进行访问控制的主要手段。对此 Go 语言提供了简单易用的 Mutex。Mutex 和 Gorou
- pandas 的日期/时间类型有如下几种:ConceptScalar ClassArray Classpandas Data TypePri
- atan()方法返回x的反正切值,以弧度表示。Syntax以下是atan()方法的语法:atan(x)注意:此函数是无法直接访问
- 本文实例讲述了Python实现发送与接收邮件的方法。分享给大家供大家参考,具体如下:一、发送邮件这里实现给网易邮箱发送邮件功能:import