当你试图startActivityForResult为此Activity而已launchMode="singleTask"; 它不会返回任何值onActivityResult,当你设置时launchMode="standard"; 一切正常,但系统要求说这Activity必须是singleTask,无论如何要解决这个问题?
我试图从相机中保存图像,但它一直返回错误。我以为图像没有被显示,但是当我查看文件系统时,我有很多文件,但它们的长度都为零。
这里只是设置了一些。
val pictureResult = remember { mutableStateOf<Boolean?>(null)}
val context = LocalContext.current
val cameraLauncher = rememberLauncherForActivityResult(ActivityResultContracts.TakePicture()) {
pictureResult.value = it
// $it is false
}
Run Code Online (Sandbox Code Playgroud)
这将创建屏幕截图中的文件。
fun createImageFile(extension:String): File {
// Create an image file name
val timeStamp: String = SimpleDateFormat("yyyyMMdd_HHmmss").format(Date())
val storageDir: File? = context.getExternalFilesDir(Environment.DIRECTORY_PICTURES)
val imagePath: File = File(context.filesDir, directoryFromExtension(extension))
return File(imagePath, "justme${timeStamp}${extension}"
).apply {
myNewsCreatorViewModel.currentPhotoPath = absolutePath
}
}
Run Code Online (Sandbox Code Playgroud)
单击该按钮后,我会从上一个方法返回的文件开始执行这些步骤。
val uri = FileProvider.getUriForFile(context, "com.mine.fileprovider", file)
cameraLauncher.launch(uri)
Run Code Online (Sandbox Code Playgroud)
这是我设置 后的结果,想法是然后显示图像,或者如果文件未保存为 false,pictureResult.value我当前会显示一条短信。imageSaved
pictureResult.value?.let { imageSaved -> …Run Code Online (Sandbox Code Playgroud)