마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

fileprovider 질문

0 추천

앱 로직

 

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 올리면 파일이 없어서 그냥 다시 원래 액티비티로 돌아옵니다 ;;

 

관련해서 아시는분 있으면 도움 부탁드립니다 ㅠ

익명사용자 님이 2018년 8월 13일 질문
안녕하세요.
파일 다운로드후 어플 자동 실행하는 코드라면....
http://link2me.tistory.com/1506 참조 해보세요.
이미 해결 했지만 이 글을 봤더라면 더 수월하게 해결 했겠네요 ㅠㅠ
저의 경우는 <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
가 없어서 그랬습니다.
오레오 부터 적용된거라 옛날 문서가 많아서 이부분이 없었던거같아요 ㅠㅠ
감사합니다

1개의 답변

0 추천
mcsong (44,040 포인트) 님이 2018년 8월 14일 답변
감사합니다 도움 많이 되었습니다
...