Android7.0调取系统权限详解

本尊在此(Android官方解决方法):点击打开链接

Android 6.0之后的版本增加了运行时权限,应用程序在执行每个需要系统权限的功能时,需要添加权限请求代码(默认权限禁止),否则应用程序无法响应,

测试过程中,发现在android7.0以上的设备上使用摄像头时,直接崩溃掉了。原因是android7.0开始,相机拍照的图像保存路径必须在此应用的内部存储文件夹(storage/mounted/0/Android/data/包名//files/pictures文件夹)。需要使用FileProvider获取内部文件的uri

简单的三句话,无法让TeachCourse真正理解Android 7.0系统权限更改的含义,如果不按照文档的方式去做,API 24开发的应用程序是否就用不了吗?

出了问题咱们就找问题,下面是详细步骤希望能帮助到你们:

1,在manifest.xml中加入:

权限必不可少:

相机权限、读写权限



然后是:


   
        android:name="android.support.v4.content.FileProvider"
        android:authorities="自己包名.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
       
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/file_provider" />

   

2,在res中新建xml文件夹,创建file_provider.xml文件

  
  
      
                    name="camera_photos"  
            path="Android/data/自己包名/files/Pictures" />  
   
  
  

  

3.代码中使用

点击事件里面写入就ok:

                Intent intent = new Intent();
                intent.setAction("android.media.action.VIDEO_CAPTURE");//录像或者相机
                intent.addCategory("android.intent.category.DEFAULT");

                  //判断版本

                if (Build.VERSION.SDK_INT >= 24) {
                    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                    //24以上使用FileProvider
                    intent.putExtra(MediaStore.EXTRA_OUTPUT,
                            FileProvider.getUriForFile(IssueActivity.this, "自己包名.fileprovider", file));
                }else{
                    //24以下
                    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
                }
                startActivity(intent);

4.ok


 
 

你可能感兴趣的:(Android7.0调取系统权限详解)