Манифест с файловым провайдером, совместимым со старой версией Android - PullRequest
0 голосов
/ 08 февраля 2019

Чтобы обеспечить совместимость с Android 8 для моего приложения, мне пришлось добавить тег «провайдера» в манифест.Это тег:

   <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="xxx.xxx.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_paths" />
    </provider>

Я все реализовал и все работает на Android 7/8/9 .

Сегодня попробуйте установить приложение на старомустройство ( ANDROID 4 ) и это сообщение об ошибке:

  java.lang.RuntimeException: **Unable to get provider android.support.v4.content.FileProvider**: 
java.lang.ClassNotFoundException: Didn't find class "**android.support.v4.content.FileProvider**" on path: 
DexPathList[[zip file "/data/app/mywork.activity-4.apk"],nativeLibraryDirectories=[/data/app-lib/mywork.activity-4, /vendor/lib, /system/lib]]

Я понял, что проблема в том, что на Android4 нет этой библиотеки но я не хочу, чтобы две версии приложения имели два разных файла манифеста.

Какие могут быть решения?Можете ли вы добавить библиотеку (которой нет у andorid4) вручную?Это с чем-то конфликтует?

В противном случае я не понимаю смысла ввода кода

(Build.VERSION.SDK_INT> = Build.VERSION_CODES.N)

, когда я решаю, стоит лииспользуйте fileprovider или старый тип intent .

Если у меня есть манифест, который не совместим с версиями до Build.VERSION_CODES.N .... условное выражение в коде не имеет смысла.

Какя могу решить?

1 Ответ

0 голосов
/ 08 февраля 2019

скорее всего targetApi должно работать:

<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="xxx.xxx.fileprovider"
    android:grantUriPermissions="true"
    android:exported="false"

    tools:targetApi="o">

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

</provider>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...