700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 安卓7.0 申请相机及读写权限

安卓7.0 申请相机及读写权限

时间:2022-09-10 22:55:55

相关推荐

安卓7.0 申请相机及读写权限

这个部分是上学期做项目时遇到的一个问题,项目中需要用相机拍摄图片,当时在网上找的调用系统相机的方法都没有主动申请权限,而在安卓6.0以后版本这是十分必要的部分,不申请权限程序会崩溃。后来看了郭霖大佬的书,完美的解决了这个问题,所以还是很推荐这本安卓入门的书。

另外本人是刚学习安卓的小白,本片博客其实算是一个笔记,希望写的有不对的地方大佬们可以指出来。

本部分来源于《第一行代码》。

1、在AndroidManifest.xml中添加如下代码:

<uses-permission android:name="android.permission.CAMERA" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

分别为相机权限和读写权限。

2、初始化writeflag:

int writeflag = 0;//判断储存权限是否获取

3、在onCreate()函数里添加如下代码:

if(ContextCompat.checkSelfPermission(BCH.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ActivityCompat.requestPermissions(BCH.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 2);}else{writeflag = 1;}

如果没有读写权限,将会向用户申请权限;如果有则将writeflag设为1.即在APP第一次启动时向用户申请读写权限。为了要在用户首次打开APP时向用户申请必要权限,在onCreate()函数里写上述代码。

4、在打开相机的按钮函数里加上如下代码:

if(writeflag == 0){Toast.makeText(this, "没有存储权限!\n请接收权限申请或前往设置添加权限!", Toast.LENGTH_SHORT).show();ActivityCompat.requestPermissions(BCH.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 2);}else{//进行相机权限的检测,如果没有授权,申请权限。if(ContextCompat.checkSelfPermission(BCH.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){ActivityCompat.requestPermissions(BCH.this, new String[]{Manifest.permission.CAMERA}, 1);}else{startCamera();}}

如果没有读写权限则对用户进行提示并申请权限;有则检查是与否有相机权限,没有则申请,有则执行startCamera()函数,打开相机。

5、申请权限的回调函数:

@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults){switch (requestCode){case 1:if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){startCamera();}else{Toast.makeText(this, "没有相机权限!\n请接收权限申请或前往设置添加权限!", Toast.LENGTH_SHORT).show();}break;case 2:if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){writeflag = 1;}else{Toast.makeText(this, "没有存储权限!\n请接收权限申请或前往设置添加权限!", Toast.LENGTH_SHORT).show();}break;default:}}

小结:申请权限的逻辑即在执行某功能或函数前判断是否具有相应的权限,如果没有则向用户申请权限,转入权限申请回调函数,如果有则执行该功能或函数。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。