앱 로직
DownloadManager로 앱 다운 받고
BroadCastReciever에서 앱 다운완료 이벤트 받고
FileProvider로 파일 가져와서
Intent로 apk 파일 실행시키는겁니다.
- Manifest.xml
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
-provider_paths.xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
</paths>
- java
Uri uri = FileProvider.getUriForFile(IntroActivity.this, BuildConfig.APPLICATION_ID + ".provider" , file);
intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setDataAndType(uri, type);
startActivity(intent);
uri = content://my.packageName.provider/external_files/Download/app_V1.0.1.apk
질문이 있는데요
java 코드에서 file.exists하면 true 떨어져서
파일 있는거는 제대로 확인이 됩니다.
근데
Uri uri = FileProvider.getUriForFile(IntroActivity.this, BuildConfig.APPLICATION_ID + ".provider" , file);
이 소스에서 uri 가 content://my.packageName.provider/external_files/Download/app_V1.0.1.apk
이렇게 떨어지거든요 ?
** 실제 file 경로 = /storage/emulated/0/Download/app_V1.0.1.apk
이게 제대로 되는게 맞는지 ..
new File("content://my.packageName.provider/external_files/Download/app_V1.0.1.apk").exists()
하면 false로 나오거든요 ..? =_= ...
그래서 이 uri로
intent 올리면 파일이 없어서 그냥 다시 원래 액티비티로 돌아옵니다 ;;
관련해서 아시는분 있으면 도움 부탁드립니다 ㅠ