Android8.0 파일 저장소 권한

우선 Android 6.0 이후에는 동적으로 권한을 신청해야하는데 이전과 마찬가지로 AndroidManifest.xml에서도 일부 권한 이 필요합니다 .

얼마 전 아바타를 업로드 할 때 안드로이드 8.0 휴대폰에서 사진을 찍고 이미지 자르기가 실패하는 현상이 발생했습니다. 인터넷 검색에서 안드로이드 8.0 이후 권한에 제한이 추가 된 것으로 나타났습니다. 나는 그것을 요약했다 :

먼저 res 폴더 아래에 xml 폴더를 만든 다음 그림과 같이 provider_paths.xml을 만듭니다.


provider_path.xm의 내용은 다음과 같습니다.

<? xml version = "1.0" encoding = "utf-8" ?>
 < paths xmlns : android = "http://schemas.android.com/apk/res/android" > 
    < external-path name = "external" path = "." /> 
</ 경로 >
그런 다음 AndroidManifest.xml에서 정보구성합니다.
< 제공자
    android : name = "android.support.v4.content.FileProvider"
 android : authorities = "包 名"
 android : exported = "false"
 android : grantUriPermissions = "true" >
    < meta-data
 android : name = "android.support .FILE_PROVIDER_PATHS "
 android : resource = "@ xml / provider_paths " />
</ provider >                            
클릭하여 사진을 찍을 때 판단
파일 파일 = new File (Environment 
        . getExternalStorageDirectory (), "image.jpg" );
if (Build.VERSION. SDK_INT > = 24 ) { // 버전이 7.0 이상인지 확인
 // 매개 변수 1 컨텍스트, 매개 변수 2 공급자 호스트 주소 및 구성 파일은 일관된 매개 변수 3 공유 파일입니다.
tempUri = FileProvider. getUriForFile ( 컨텍스트 , "包 名" , 파일);
//이 문장을 추가하여 Uri가 나타내는 파일을 대상 응용 프로그램에 임시로 승인합니다.

} else {

    tempUri = Uri. fromFile (파일); 
}
동적으로 권한 요청
 
 
if (ContextCompat. checkSelfPermission ( context , Manifest.permission. CAMERA )
! = PackageManager. PERMISSION_GRANTED ) {ActivityCompat. requestPermissions ( this , new String [] {Manifest.permission. CAMERA },
1000);} else {// 동적 권한을 신청할 때 작업이 필요하지 않습니다} 동적 권한 적용을위한 콜백
 
 
@Override
 public void onRequestPermissionsResult
(int requestCode, String[] permissions, int[] grantResults){

    if (requestCode == 1000)
    {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED)
        {
            //同意申请权限
        } else
        {
            // 用户拒绝申请权限
            Toast.makeText(context,"请同意调起相机权限", Toast.LENGTH_SHORT).show();
        }
        return;
    }
  
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}



추천

출처blog.csdn.net/u010256329/article/details/79895718