Android - получить путь к файлу выбранного PDF, DOC, PPT или XLS в моем приложении

Я разрабатываю приложение для Android.

Моя цель:

Если пользователь откроет файлы pdf, doc, ppt или xls в любой папке внутри SDCard (или) Dropbox (или) электронной почты и т. Д., Он должен перейти в мое приложение (в моем приложении я сделаю некоторый процесс, основанный на файлы, которые они выбрали).

Что я сделал:

Если пользователь нажимает на файл PDF, я могу получить путь к файлу, и они переходят в мое приложение. Для этого я сделал следующий код.

Фрагмент кода:

В AndroidManifest.xml я добавил следующий код:

        <activity android:name="com.openwith.OpenwithActivity" >
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="file" />
                <data android:mimeType="*/*" />
                <data android:scheme="http" android:host="*" android:pathPattern=".*\\.pdf" />
                <data android:scheme="https" android:host="*" android:pathPattern=".*\\.pdf" />
                <data android:scheme="content" android:host="*" android:pathPattern=".*\\.pdf" />
                <data android:scheme="file" android:host="*" android:pathPattern=".*\\.pdf" />
            </intent-filter>
        </activity>

В OpenwithActivity.java

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.webkit.WebView;

public class OpenwithActivity extends Activity {

        @SuppressLint("SetJavaScriptEnabled")
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_openwith);

            Intent intent = getIntent();
            Uri data = intent.getData();
            if (data != null) {
                  String filePath = data.getPath();
            } 
        }

}

Что мне нужно:

Я получаю только путь к файлу PDF. Если я хочу получить путь к файлу doc, ppt и xls, что мне нужно добавить в AndroidManifest.xml?

Я искал в интернете. Но я не получил никаких четких документов (или) учебных пособий. Кто-нибудь может помочь мне сделать это?

1 ответ

Решение

Добавьте те же записи фильтра намерений для других типов файлов, что и для PDF-файла.

<data android:scheme="http" android:host="*" android:pathPattern=".*\\.ppt" />
<data android:scheme="https" android:host="*" android:pathPattern=".*\\.ppt" />
<data android:scheme="content" android:host="*" android:pathPattern=".*\\.ppt" />
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.ppt" />
<data android:scheme="http" android:host="*" android:pathPattern=".*\\.xls" />
<data android:scheme="https" android:host="*" android:pathPattern=".*\\.xls" />
<data android:scheme="content" android:host="*" android:pathPattern=".*\\.xls" />
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.xls" />
<data android:scheme="http" android:host="*" android:pathPattern=".*\\.doc" />
<data android:scheme="https" android:host="*" android:pathPattern=".*\\.doc" />
<data android:scheme="content" android:host="*" android:pathPattern=".*\\.doc" />
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.doc" />

И для изображений это должно сделать:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />

    <data android:mimeType="image/*" android:scheme="http" android:host="*" />
    <data android:mimeType="image/*" android:scheme="https" android:host="*" />
    <data android:mimeType="image/*" android:scheme="content" android:host="*" />
    <data android:mimeType="image/*" android:scheme="file" android:host="*" />
</intent-filter>
Другие вопросы по тегам