Добавление нескольких поставщиков файлов в приложение Android

ребята, я работаю над приложением для Android, для которого мне нужна зависимость от внешнего приложения (файл .aar) у приложения библиотеки есть собственный поставщик файлов, а у моего приложения - собственный.

Библиотека работает хорошо, когда я запускаю ее как отдельное приложение, но когда я включаю ее в свое приложение, функции камеры не работают. Я получаю следующую ошибку

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object reference

после файла манифеста приложения

<provider
            android:name = "android.support.v4.content.FileProvider"
            android:authorities = "${applicationId}.provider"
            android:exported = "false"
            android:grantUriPermissions = "true">
            <meta-data
                android:name = "android.support.FILE_PROVIDER_PATHS"
                android:resource = "@xml/file_paths" />
        </provider>

и ниже представлен файл манифеста модуля lib

<provider
            android:name = "android.support.v4.content.FileProvider"
            android:authorities = "com.ma.bot.provider"
            android:exported = "false"
            android:grantUriPermissions = "true">
            <meta-data
                android:name = "android.support.FILE_PROVIDER_PATHS"
                android:resource = "@xml/file_paths" />
        </provider>

как приложение, так и модуль lib имеют разные имена пакетов, как я добавляю этих двух поставщиков файлов в приложение Я также пытаюсь использовать несколько поставщиков файлов, но при компиляции приложения получаю ошибку синтаксического анализа XML.

android:authorities = "${applicationId}.provider;com.ma.bot.provider"

как это решить.

7
0
4 155
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ребят нашел решение по этой ссылке Можно ли использовать несколько полномочий с FileProvider?

В основном проблема заключается в том, что моя библиотека и приложение имеют одно и то же имя android.support.v4.content.FileProvider, поэтому оно сталкивается при слиянии манифестов, чтобы избежать этого, мне нужно осквернить пустой класс, расширяющий поставщик файлов, и использовать его имя поставщика

<provider
            android:name = "com.MAG.MAGFileProvider"
            android:authorities = "${applicationId}.provider;"
            android:exported = "false"
            android:grantUriPermissions = "true">
            <meta-data
                android:name = "android.support.FILE_PROVIDER_PATHS"
                android:resource = "@xml/file_paths" />
        </provider>

и объявить такой класс

import android.support.v4.content.FileProvider;
public class MAGFileProvider extends FileProvider
{
    //we extend fileprovider to stop collision with chatbot library file provider
    //this class is empty and used in manifest
}

у меня это сработало. когда я использую это для библиотеки android: name = "android.support.v4.content.FileProvider" android: sizes = "com.library.provider" и это в основном манифесте приложения android: name = "com.MAG.MAGFileProvider" android: functions = "$ {applicationId} .provider;"

Himanshu Mori 24.01.2019 13:51

где создается файл класса?

Karen 07.08.2020 23:49

Другие вопросы по теме