Пользовательское расширение файла не открывается - PullRequest
0 голосов
/ 07 апреля 2019

Те же вопросы задавались ранее, я проверил их все, и ни один из них не сработал.
Я записываю сериализованный объект в файл и называю его 575454.myCustomExe
. Я хочу, чтобы мое приложение просто открывало *.myCustomExe ибольше не надо.

Как сохранять файлы:

    File file = new File(Environment.getExternalStoragePublicDirectory("MyAppFolder") , getId() + ".myCustomExe");
    if (!file.exists()) {
        file.getParentFile().mkdirs();
        file.createNewFile();
        }
    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
    out.writeObject(serializableObject);
    out.close();

Фильтр My Intent:

        <activity
            android:name=".ui.activity.ImportActivity">

            <intent-filter android:icon="@drawable/ic_save"
                android:label="label"
                android:priority="1">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />    

                <data android:scheme="content" />
                <data android:host="*" />
                <data android:mimeType="*/*" />
                <data android:pathPattern=".*\.myCustomExe"/>    

            </intent-filter>

Я тоже пытался <data android:pathPattern=".*\\.myCustomExe" />.

1 Ответ

0 голосов
/ 07 апреля 2019

Расширения файлов мало используются на Android. Начиная с Android Q, файлы мало используются на Android. Для ContentProvider не требуется помещать файловое расширение на content Uri. Итак, хотя то, что у вас есть, я считаю технически правильным, как вы заметили, оно не будет работать очень хорошо.

Вы ничего не можете с этим поделать, поскольку вы не можете изменить поведение других приложений.

Если вы хотите поддерживать обычные Intent действия, такие как ACTION_VIEW, лучше всего сохранить файл в общем мета-формате (например, JSON, XML) с соответствующим расширением файла, а затем иметь <intent-filter> фильтр на соответствующий тип MIME. Вам нужно будет учитывать возможность выбора пользователем файла, который не был создан вашим приложением, хотя технически вам нужно было справиться с этим даже при использовании собственного расширения.

...