From 1148f912418b9aa27fa2082e02efe960c4393b46 Mon Sep 17 00:00:00 2001 From: shenzuqiang Date: Mon, 16 Mar 2026 10:11:59 +0800 Subject: [PATCH] =?UTF-8?q?Dev=EF=BC=9A=201=E3=80=81=E6=A2=B3=E7=90=86?= =?UTF-8?q?=E6=9D=83=E9=99=90=E8=A6=81=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 19 +++++++++------ .../com/img/rabbit/components/ImagePicker.kt | 23 +++++++++++++++---- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 11b5846..08c6fb4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,21 +1,25 @@ - + + + + + + tools:ignore="ScopedStorage" /> + - + android:maxSdkVersion="32" /> + + tools:ignore="PhotoAndVideoPolicy" /> @@ -73,7 +77,8 @@ android:screenOrientation="portrait" android:configChanges="orientation|screenSize|screenLayout|keyboardHidden" android:exported="true" - android:launchMode="singleTask" > + android:launchMode="singleTask" + tools:ignore="DiscouragedApi,LockedOrientationActivity"> diff --git a/app/src/main/java/com/img/rabbit/components/ImagePicker.kt b/app/src/main/java/com/img/rabbit/components/ImagePicker.kt index 6f50305..4d18e7e 100644 --- a/app/src/main/java/com/img/rabbit/components/ImagePicker.kt +++ b/app/src/main/java/com/img/rabbit/components/ImagePicker.kt @@ -1,5 +1,6 @@ package com.img.rabbit.components +import android.Manifest import android.annotation.SuppressLint import android.net.Uri import androidx.activity.compose.rememberLauncherForActivityResult @@ -55,11 +56,14 @@ import java.io.File import androidx.compose.foundation.Image import androidx.compose.ui.res.painterResource import coil3.compose.AsyncImage +import com.google.accompanist.permissions.ExperimentalPermissionsApi +import com.google.accompanist.permissions.isGranted +import com.google.accompanist.permissions.rememberPermissionState import com.img.rabbit.R import kotlin.collections.minus import kotlin.let -@OptIn(ExperimentalMaterial3Api::class) +@OptIn(ExperimentalMaterial3Api::class, ExperimentalPermissionsApi::class) @Composable fun ImagePicker( modifier: Modifier = Modifier, @@ -73,6 +77,11 @@ fun ImagePicker( onDeleteUpdated: (currentUri: Uri, uris: List) -> Unit ) { val context = LocalContext.current + + val cameraPermissionState = rememberPermissionState( + Manifest.permission.CAMERA + ) + // 添加临时文件管理 val tempImageUri = remember { mutableStateOf(null) } @@ -130,10 +139,14 @@ fun ImagePicker( confirmButton = { TextButton( onClick = { - showChoiceDialog = false - val uri = FileProvider.getUriForFile(context,"${context.packageName}.fileProvider",File.createTempFile("IMG_", ".jpg", context.externalCacheDir)) - tempImageUri.value = uri - cameraLauncher.launch(uri) + if (cameraPermissionState.status.isGranted) { + showChoiceDialog = false + val uri = FileProvider.getUriForFile(context,"${context.packageName}.fileProvider",File.createTempFile("IMG_", ".jpg", context.externalCacheDir)) + tempImageUri.value = uri + cameraLauncher.launch(uri) + }else{ + cameraPermissionState.launchPermissionRequest() + } } ) { Text(text = "拍照", fontSize = 14.sp) } },