#android #react-native
Вопрос:
Я использую react native для мобильной разработки. Мой вопрос в том, что всплывающее разрешение камеры не отображается на мобильном устройстве.
Я прочитал много ответов о переполнении стека, в которых предлагается добавить запись в AndroidManifest.xml
файл. Я уже пробовал это — но все еще не могу увидеть всплывающее разрешение.
Мой AndroidManifest.xml
:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xyz">
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:name=".MainApplication"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:allowBackup="false"
android:requestLegacyExternalStorage="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Мой собственный код реакции (взят из официального документа):
const takePermissions = async() => {
await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.CAMERA,
{
title: "Cool Photo App Camera Permission",
message:
"Cool Photo App needs access to your camera "
"so you can take awesome pictures.",
buttonNeutral: "Ask Me Later",
buttonNegative: "Cancel",
buttonPositive: "OK"
}
);
}
...
useEffect(() => {
takePermissions();
}, []);
Я не могу видеть всплывающее окно для разрешения камеры на своем мобильном устройстве.
ПРАВКА: Я заметил, что, как только мое приложение установлено на мобильном устройстве, оно уже автоматически получает разрешение камеры и хранилища. Из-за этого разрешения всплывающее окно не отображается, когда пользователь открывает приложение. Я попытался удалить разрешения на камеру и хранение в AndroidManifest.xml и попробовал еще раз — но, к сожалению, столкнулся с тем же поведением — разрешение на камеру и хранение уже предоставлено в настройках приложения, и поэтому всплывающее диалоговое окно разрешения не отображается. Как это исправить?
Даже если я удалю и переустановлю-приложение автоматически получит разрешение на камеру и хранилище в настройках приложения. Из-за этого, к сожалению, всплывающее окно разрешения не отображается в приложении. В этом-то и проблема. Я хочу, чтобы, когда пользователь впервые открывает приложение, он увидел всплывающее окно с разрешением.
Как автоматически предоставляются разрешения на камеру и хранение в настройках приложения? Даже если я удалю и переустановлю?
Комментарии:
1. Каков результат запроса()? Пользователь мог отказать вам в разрешении. Вы можете ожидать несколько возможных результатов от запроса, а именно:
GRANTED
DENIED
NEVER_ASK_AGAIN
2. @TommyLeong. его
GRANTED
. Также, пожалуйста, ознакомьтесь с разделом РЕДАКТИРОВАНИЯ в приведенном выше вопросе, который я только что добавил.3. Если у вашего приложения уже есть разрешение камеры, не могли бы вы просто перейти дальше, чтобы использовать функцию камеры? Вам не следует снова показывать этот диалог. Предлагаю вам удалить приложение и переустановить его снова, чтобы проверить, отображается ли диалоговое окно разрешений в первый раз.
4. Даже если я удалю и переустановлю-приложение автоматически получит разрешение на камеру и хранилище в настройках приложения. Из-за этого, к сожалению, всплывающее окно разрешения не отображается в приложении. В этом-то и проблема. Я хочу, чтобы, когда пользователь впервые открывает приложение, он увидел всплывающее окно с разрешением.