У меня есть рабочий проект 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);
}
Трудно сказать, о чем здесь спрашивают, и на этот вопрос нельзя разумно ответить в его нынешней форме. Предоставьте примеры контекста и / или почтового индекса того, что вы сделали (например: Что ты пробовал?)
Новые уровни API Android предоставляют разрешение в Интернете явно, не требуя его в манифесте. Это новая нормальная ситуация.
Зависимости Gradle также являются приложениями Java / Kotlin для Android, что означает, что у них есть свои собственные манифесты.
Когда вы строите с помощью Gradle, он объединяет все ваши манифесты, включая все те, что есть в ваших реализациях. Это означает, что манифест Firebase объединен с вашим.
Большинство библиотек определяют разрешения, которые они используют в своих собственных манифестах, поэтому вам не нужно включать их самостоятельно, а Firebase, как и большинство библиотек, включает разрешение INTERNET в свой манифест.
Когда вы компилируете свой проект, манифест Firestore объединяется с вашим, поэтому ваше приложение теперь запрашивает разрешение INTERNET.
Это правильный ответ! Я наблюдал за файлом манифеста с помощью приложения ManifestReader, и он показывает разрешения в Интернете. Спасибо.
показать код и манифест