从无到有做一个身份证识别app——创建app和动态权限申请

创建

如果打开as的界面不同,可能是版本不一样

1.选 Empty Activity

在这里插入图片描述

2.基本设置在这里插入图片描述

2.1里面的save location 最好改一下,知道他放在哪里了,我这里就直接在桌面创建了一个文件夹
2.2里面的最低api等级,看你自己的需求改

3.创建完成

在这里插入图片描述
3.1如果这里对界面有什么想法

  File->setting->appearance and behavior->appearance
  这里可以改一下颜色或者字体大小

4.获取动态权限

4.1需要的权限

Android 6.0也就是API等级23之后,获取权限需要动态申请,否则程序无法正常使用,所以我们先判断API有没有23
文件存储权限,摄像头权限(如果是调用系统摄像头就不要申请这个权限),因为现在的手机几乎都是6.0之后的手机,所以我们需要获取动态权限,如果不申请动态权限的话,就需要自己打开手机设置里面的权限设置,手动给软件获取权限

下面这段放置的路径为:app/manifes/AndroidManifest.xml,放在application上面,如下图
在这里插入图片描述

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

4.2申请权限

  1. 声明变量
   private static final String[] FILE_PERMISSIONS = {Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CAMERA};
    //这里用数组,是为了方便还有其他权限,照着这个格式往后面加就好了
    private static final int FILE_PERMISSIONS_CODE = 1;
  1. 判断是不是api大于23,如果构建的时候出现一些红色的提示,按Alt+Enter,这样可以解决一些简单的问题
//创建这个方法,记得把方法放到   onCreate  方法中
 private void requestPermission() {
        // 当API大于 23 时,才动态申请权限
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            ActivityCompat.requestPermissions(MainActivity.this,FILE_PERMISSIONS,FILE_PERMISSIONS_CODE);
        }
    }

然后加上下面的申请权限的代码

   @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case FILE_PERMISSIONS_CODE:
                //权限请求失败
                if (grantResults.length == FILE_PERMISSIONS.length) {
                    for (int result : grantResults) {
                        if (result != PackageManager.PERMISSION_GRANTED) {
                            //弹出对话框引导用户去设置
                            showDialog();//方法在下面
                            Toast.makeText(MainActivity.this, "请求权限被拒绝", Toast.LENGTH_LONG).show();
                            break;
                        }
                    }
                }else{
                    Toast.makeText(MainActivity.this, "已授权", Toast.LENGTH_LONG).show();
                }
                break;
        }
    }

做到这一步之后,如果真机运行的话,应该就可以动态申请权限了

发布了19 篇原创文章 · 获赞 2 · 访问量 2096

猜你喜欢

转载自blog.csdn.net/weixin_43308622/article/details/103338039