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

안드로이드 기기내에 저장한 pdf파일을 intent로 열수가 없습니다..

0 추천

정말 미치고환장하겄군요 ㅜㅠ

/storage/emulated/0/Download/Abcd.pdf

에 잘넣었습니다.

경로 사진은 아래와같구요.

코드는 아래와같습니다. 앱 실행하면 바로 인텐트를 통해서 pdf viewer들을 보여주고 

선택하면 열려야합니다...만 안열리고 아래와 같이 에러가떠요.

파일은 당연히 정상이고 내 파일에서 위경로로 가서 실행하면 잘만 뜹니다 

MainActivity.Java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent intent=new Intent();

        File mypath=new File( Environment.getDataDirectory().getAbsolutePath()+"/Download","Abcd.pdf");

        Log.e("download",mypath.getAbsolutePath());
        Uri pdfUri = FileProvider.getUriForFile(getApplicationContext(), getApplicationContext().getPackageName() + ".provider", mypath);



        Log.e("download",mypath.exists()+"");
        if (mypath.exists()) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                Log.e("download","result : "+pdfUri.getPath());          
                intent = new Intent(Intent.ACTION_VIEW);
                intent.setType("application/pdf");
                intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mypath));
            }else{

            }
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);


            try {
                startActivity(intent);
            }
            catch (ActivityNotFoundException e) {
                Log.e("error","error"+e);
            }
        }
    }
}

 

FileProvider를 사용했고 

 

res/xml/provider_paths.xml

<?xml version="1.0" encoding="utf-8"?>
 <paths xmlns:android="http://schemas.android.com/apk/res/android">
 <external-path
name="storage/emulated/0"
path="."/>
</paths>

Manifest.xml

 

<provider
            android:authorities="${applicationId}.provider"
            android:name="android.support.v4.content.FileProvider"
            android:exported="false"
            android:grantUriPermissions="true">

            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths"/>
        </provider>

 

다 잘추가했씁니다 ㅜㅠ

kotran99 (120 포인트) 님이 2018년 9월 16일 질문
kotran99님이 2018년 9월 16일 수정

2개의 답변

0 추천

아래 코드를 추가해 보세용.. ^^

 

intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

 

 

mcsong (44,040 포인트) 님이 2018년 9월 18일 답변
0 추천
저도 같은 증상으로 고민중인데 혹시 해결 하셨나요?
익명사용자 님이 2019년 5월 23일 답변
...