Почему Firestore работает без доступа к Интернету?

У меня есть рабочий проект Firestore. Я читаю и пишу, и все работает хорошо, но главная проблема в том, что все это работает без доступа к Интернету. У меня есть одно разрешение только на аудиозапись.

Как такое могло случиться?

Манифест:

<?xml version = "1.0" encoding = "utf-8"?>
<manifest
    xmlns:android = "http://schemas.android.com/apk/res/android"
    package = "xxx">

    <uses-sdk android:maxSdkVersion = "28" />

    <uses-permission android:name = "android.permission.RECORD_AUDIO" />

    <application
        android:name = ".App"
        android:allowBackup = "false"
        android:icon = "@mipmap/ic_logo"
        android:label = "@string/app_name"
        android:supportsRtl = "true"
        android:theme = "@style/AppTheme">
        <activity android:name = ".AuthActivity" android:launchMode = "singleTop" 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 = ".MainActivity" android:launchMode = "singleTop">
        </activity>
        <activity
            android:name = ".NewNoteActivity"
            android:parentActivityName = ".MainActivity">
        </activity>
    </application>

</manifest>

Инициализация Firestore / RecycleView:

private void setUpRecyclerView() {
        Query query = notebookRef.orderBy("priority", Query.Direction.DESCENDING);

        FirestoreRecyclerOptions<Note> options = new FirestoreRecyclerOptions.Builder<Note>()
                .setQuery(query, Note.class)
                .build();

        adapter = new NoteAdapter(this, options);

        RecyclerView recyclerView = findViewById(R.id.recycle_view);
        recyclerView.setHasFixedSize( true );
        recyclerView.setLayoutManager( new LinearLayoutManager( this ) );
        recyclerView.setAdapter(adapter);
}

показать код и манифест

Pavneet_Singh 17.10.2018 18:54

Трудно сказать, о чем здесь спрашивают, и на этот вопрос нельзя разумно ответить в его нынешней форме. Предоставьте примеры контекста и / или почтового индекса того, что вы сделали (например: Что ты пробовал?)

Sean Pianka 17.10.2018 19:02

Новые уровни API Android предоставляют разрешение в Интернете явно, не требуя его в манифесте. Это новая нормальная ситуация.

Doug Stevenson 17.10.2018 20:19
1
3
313
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Зависимости Gradle также являются приложениями Java / Kotlin для Android, что означает, что у них есть свои собственные манифесты.

Когда вы строите с помощью Gradle, он объединяет все ваши манифесты, включая все те, что есть в ваших реализациях. Это означает, что манифест Firebase объединен с вашим.

Большинство библиотек определяют разрешения, которые они используют в своих собственных манифестах, поэтому вам не нужно включать их самостоятельно, а Firebase, как и большинство библиотек, включает разрешение INTERNET в свой манифест.

Когда вы компилируете свой проект, манифест Firestore объединяется с вашим, поэтому ваше приложение теперь запрашивает разрешение INTERNET.

Это правильный ответ! Я наблюдал за файлом манифеста с помощью приложения ManifestReader, и он показывает разрешения в Интернете. Спасибо.

pita707 17.10.2018 19:08

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