업그레이드 설치 APK에 FileUriExposedException이 나타나는 해결 방법
2789 단어 Android
https://www.cnblogs.com/baiqiantao/p/9548146.html
https://www.cnblogs.com/yongdaimi/p/6067319.html
제이가 말한 것은 모두 비교적 상세하다.자신의 항목에서도 문장에서 말한 대로 수정하여 정상적으로 운행한다.
우선 매니페스트에서.xml 파일에 추가
res에서 새 폴더 xml, 파일 파일 추가 filepaths
APK 설치 코드에서 다음과 같이 수정합니다.
public void installUpgradePackage(Uri packageFile) {
Intent update = new Intent(Intent.ACTION_VIEW);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
update.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Uri contentUri = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".fileprovider", new File(packageFile.getPath()));
update.setDataAndType(contentUri, "application/vnd.android.package-archive");
} else {
update.setDataAndType(packageFile, "application/vnd.android.package-archive");
update.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
startActivity(update);
}
이상의 순서에 따라 진행하면 문제를 해결할 수 있다.처음에는 디버깅 중에 자신에게 구덩이를 팠는데,
나는 Uri content Uri = File Provider를getUriForFile(this, BuildConfig.APPLICATION_ID + ".fileprovider", new File(packageFile.getPath()));중packageFile.getPath () 는 패키지파일로 작성되었습니다.toString,
packageFile.toString의 값은 다음과 같습니다.file:///storage/emulated/0/QZJ/QiZhongClient.apk
그리고 잘못 보고했어:Caused by:java.lang.IllegalArgumentException: Failed to find configured root that contains/file:/storage/emulated/0/QZJ/QiZhongClient.apk at android.support.v4.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:711)
실제로 가져올 매개 변수는 패키지파일입니다.getPath():/storage/emulated/0/QZJ/QiZhongClient.apk.
생성된 Uri contentUri의 값은 다음과 같습니다.content://qizhong.client.smart.fileprovider/external/QZJ/QiZhongClient.apk, qizhong.client.smart 이 APP의 패키지 이름입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.