Android N 7.0 오류 보고:android.os.FileUriExposedException 의 해결 방법

2845 단어 androidn7.0apk
문제점 을 발견 하 다
최근 Android N 에 Apk 타 임 스 오류 설치:android.os.FileUriExposedException:file:///storage/emulated/0/Download/appName-2.3.0.apk exposed beyond app through Intent.getData()는 관련 자 료 를 찾 아 해결 방법 을 찾 았 습 니 다.다음은 더 이상 할 말 이 없 으 니 상세 한 소 개 를 해 보 겠 습 니 다.
해결 방법
1.AndroidManifest.xml 에 다음 코드 를 추가 합 니 다.

<provider android:name="android.support.v4.content.FileProvider"
  android:authorities="app   .fileProvider"
  android:grantUriPermissions="true"
  android:exported="false">
  <meta-data
    android:name="android.support.FILE_PROVIDER_PATHS"
    android:resource="@xml/file_paths" />
</provider>
주의:
  • authorities:app 의 가방 이름.fileProvider
  • grantUriPermissions:true 여야 합 니 다.URI 임시 접근 권한 부여
  • exported:false
  • 여야 합 니 다.
  • resource:중의@xml/filepaths 는 우리 가 다음 에 추가 할 파일 입 니 다
  • 2.res 디 렉 터 리 아래 xml 폴 더 를 새로 만 들 고 file 을 새로 만 듭 니 다.paths 의 xml 파일(아래 그림)

    3、file 열기paths.xml 파일 에 다음 내용 추가
    
    <?xml version="1.0" encoding="utf-8"?>
    <paths>
      <external-path path="Android/data/app   /" name="files_root" />
      <external-path path="." name="external_storage_root" />
    </paths>
  • path:임시 권한 이 필요 한 접근 경로(.모든 경 로 를 대표 합 니 다)
  • name:이 방문 경로 에 이름 을 지어 주세요
  • 4.코드 수정 안 드 로 이 드 N
    
    Intent intent = new Intent(Intent.ACTION_VIEW);
    //     AndroidN       
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
      intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
      Uri contentUri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".fileProvider", apkFile);
      intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
    } else {
      intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    }
    startActivity(intent);
    1.우선 우 리 는 Android N 및 이상 에 대해 판단 합 니 다.
    2.그리고 flags 를 추가 하여 우리 가 어떤 임시 권한 을 부여 해 야 하 는 지 를 나타 낸다.
    3.예전 에 우 리 는 Uri.from File(apkFile)을 직접 구축 하여 Uri 를 만 들 었 는데 지금 우 리 는FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".fileProvider", apkFile);을 사용 합 니 다.
    4、BuildConfig.APPLICATION_ID 는 바로 적용 되 는 가방 이름 입 니 다.
    참조 주소
    총결산
    이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

    좋은 웹페이지 즐겨찾기