Он работает при отправке данных изображений в WebView на iOS, но не работает на Android. [Экспо]Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Он работает при отправке данных изображений в WebView на iOS, но не работает на Android. [Экспо]

Сообщение Anonymous »

Я посылаю захватываемые камеры и выбранные в галереи изображения из приложения в WebView, и мне интересно, нужно ли для этого Android и iOS настраивать. Итак, как для Android, так и для iOS я преобразую данные изображения в формат URI Base64 и отправляю его с правильным типом MIME. Консоль. < /p>
Однако при тестировании на Android, хотя изображение правильно преобразуется, кажется, что изображение не отправляется должным образом. WebView не отображает изображение, и в журналах консоли не появляются данные изображения.export const requestCameraPermission = async (
webviewRef: React.RefObject,
navigation: StackNavigationProp
) => {
const { status } = await Camera.getCameraPermissionsAsync();

if (status === "granted") {
console.log("카메라 권한 허용됨");

const image = await takePhoto();

Platform.OS === "ios"
? console.log(
"ios 촬영 이미지 데이터 앞부분:",
image?.map((i) => i.substring(0, 100))
)
: console.log(
"android 촬영 이미지 데이터 앞부분:",
image?.map((i) => i.substring(0, 100))
);

if (image) {
webviewRef.current?.postMessage(
JSON.stringify({ action: "albumData", album: image })
);
navigation?.goBack();
} else {
console.log("이미지 데이터 x");
}
} else {
const { status: newStatus } = await Camera.requestCameraPermissionsAsync();

if (newStatus !== "granted") {
Alert.alert(
"Camera Permission Required",
"This app requires access to your camera. Please enable camera permissions in your device settings.",
[
{
text: "Go to Settings",
onPress: () => Linking.openSettings(),
},
]
);
}
}
};
< /code>
takephoto.ts
export const takePhoto = async () => {
const photo = await ImagePicker.launchCameraAsync({
quality: 1,
base64: true,
mediaTypes: ImagePicker.MediaTypeOptions.Images,
});

if (!photo.canceled && photo.assets?.length > 0) {
const result = photo.assets.map((p) => {
const mimeType = "image/jpeg";
return `data:${mimeType};base64,${p.base64}`;
});

return result;
}

return null;
};


Подробнее здесь: https://stackoverflow.com/questions/796 ... -work-on-a
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»