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

intent 필터와 xml 파일 연결하기

0 추천

pdf 뷰어 앱을 만들고 있는데요.

임의의 pdf 파일을 실행했을 시 나오는 "사용할 애플리케이션" 목록에서 제가 만든 앱을 터치하면

해당 pdf 파일의 내용을 보여주는 .xml 페이지(activity_pdf.xml이라고 이름 지었습니다)로 넘어가게 만들고 싶습니다.

"사용할 애플리케이션" 목록에 앱을 띄우는 건 intent 필터를 사용해서 성공을 했는데

xml 파일과 intent를 연결시키는 방법을 잘 모르겠네요.

 

(.java 파일)

    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pdf);

        File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
        Intent intent = getIntent();

        if(Intent.ACTION_VIEW.equals(intent.getAction())) {
            intent.setDataAndType(Uri.fromFile(file), "application/pdf");
            try {
                startActivity(intent);
            }
            catch(ActivityNotFoundException e) {
                Toast.makeText(getApplicationContext(), "애플리케이션을 실행할 수 없습니다", Toast.LENGTH_LONG).show();
            }
        }

        init();
    }

 

(manifest 파일)

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity
            android:name=".MainActivity"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name=".PdfActivity"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.BROWSABLE" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="file" />
                <data android:scheme="content" />
                <data android:mimeType="application/pdf" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.BROWSABLE" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="file" />
                <data android:scheme="content" />
                <data android:mimeType="application/pdf" />
            </intent-filter>
        </activity>

    </application>

 

LinCass (320 포인트) 님이 2017년 11월 8일 질문

1개의 답변

0 추천
getIntent()로 받아온 Intent안에 필요한 정보들이 넘어옵니다. getIntent().getData()에 pdf 파일에 대한 url이 있으니 그것을 가져다가 액티비티에서 처리하면됩니다. 또다시 startActivity하는 작업은 의미 없어보이는군요.
회색 (21,340 포인트) 님이 2017년 11월 9일 답변
답변 감사합니다.
액티비티에서 처리를 어떻게 해야 하는지 조금만 더 자세하게 알려주실 수 있나요?
제가 intent를 Intent intent = new Intent(MainActivity.this, PdfActivity.class); 이렇게 수정해서 쓰고 있는데, 이걸 manifest에서 어떻게 받아야 하는지 모르겠네요.
...