1

I am trying to open the camera using a button, but I'm not getting it how do I make this button work? I Tried to declare it in variable but it's not working either.

package com.example.bohubrihiwithjetpack

import android.content.Intent
import android.content.pm.PackageManager
import android.os.Bundle
import android.provider.MediaStore
import android.widget.Button
import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import com.example.bohubrihiwithjetpack.compose.LearningCompose

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {

        }
    }

    fun checkCameraPermission() {
        if (ContextCompat.checkSelfPermission(
                this,
                android.Manifest.permission.CAMERA
            ) == PackageManager.PERMISSION_GRANTED
        ) {
            openCamera()
        } else {
            requestPermission()
        }
    }

    private fun requestPermission() {
        ActivityCompat.requestPermissions(
            this, arrayOf(android.Manifest.permission.CAMERA),
            1
        )
    }

    override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<out String>,
        grantResults: IntArray
    ) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        if (requestCode == 1) {
            if (grantResults.size > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                openCamera()
            } else {
                Toast.makeText(this, "Permission Denied", Toast.LENGTH_SHORT).show()
            }
        }
    }


    fun openCamera() {
        val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
        startActivity(intent)
    }
}

And This is the Compose Code, also I don't understand how this Compose works Like there is no id like XML. How do I make the widget work?

package com.example.bohubrihiwithjetpack.compose

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.material.Button
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.core.content.ContextCompat.startActivity
import com.example.bohubrihiwithjetpack.MainActivity
import java.util.jar.Manifest

@Composable
fun LearningCompose(
    modifier: Modifier = Modifier
) {
    val context = LocalContext.current


    Column {
        Button(onClick = { MainActivity().checkCameraPermission() }, modifier.padding(10.dp)) {
            Text(text = "Open Camera")
        }
        Button(onClick = { /*TODO*/ }, modifier.padding(10.dp)) {
            Text(text = "Open Gallery")
        }

        Button(onClick = { /*TODO*/ }, modifier.padding(10.dp)) {
            Text(text = "Open Browser")
        }
    }

}
Phil Dukhov
  • 67,741
  • 15
  • 184
  • 220
Arfin Hosain
  • 195
  • 1
  • 3
  • 10
  • this doesn't work because you're creating a new activity inside your composable. Check out [How to get activity in compose](https://stackoverflow.com/questions/64675386/how-to-get-activity-in-compose) – Phil Dukhov Oct 21 '21 at 08:57
  • Also you don't actually need an activity here at all, check out how to use [Compose CameraX on Android](https://proandroiddev.com/compose-camerax-on-android-58578f37e6df) – Phil Dukhov Oct 21 '21 at 08:59
  • https://stackoverflow.com/questions/36088699/error-open-failed-enoent-no-such-file-or-directory – Qandil Tariq Oct 21 '21 at 09:10

0 Answers0