發表於 30天計劃KotlinKotlin--30天計劃

【Kotlin】Day3 ( Intent + ImageButton )

各種筆記…

  • /res/mipmap-* 這類資料夾裡面,負責放 icon
  • /res/drawable  當中放入其它素材
  • 按鈕點擊下去後
    因為會用到 Camera 所以需要 runtime permission
    記住要把 「需要permission的動作放在else裡面」 不然他在一面請求你的permission時就會先做下面的事情所以就會Crash了~QQ

    if(ContextCompat.checkSelfPermission(MainActivity_Context, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){
        requests_for_permission(CAMERA_REQUEST_CODE)
    }else{
        val intent= Intent(MediaStore.ACTION_IMAGE_CAPTURE)
        startActivityForResult(intent, CAMERA_REQUEST_CODE)
    }
  • 想要讓人只能從檔案管理中選擇圖片時
    然後回傳時

    val intent:Intent = Intent(Intent.ACTION_GET_CONTENT)
    intent.setType("image/*")
    startActivityForResult(intent, FILESYS_REQUEST_CODE)
  • 從檔案管理那邊拿到之後還要經過轉換才能變成Bitmap
    // 接下來用當時RequestCode來判斷怎麼處理回傳的資料
    // 用 When == Switch
    when(requestCode){
        CAMERA_REQUEST_CODE -> {
            if (resultCode == Activity.RESULT_OK && data != null){
                displayImage(data.extras.get("data") as Bitmap)
            }
        }
    
        FILESYS_REQUEST_CODE -> {
            if(resultCode == Activity.RESULT_OK && data != null){
                val resolver = this.contentResolver
                val bitmap = MediaStore.Images.Media.getBitmap(resolver, data?.data)
                displayImage(bitmap)
            }
        }
    }
    fun displayImage(img: Bitmap){
        this.imageView.setImageBitmap(img)
    }
  • 拿到 Permission之後要做的事情
    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        when(requestCode){
            CAMERA_REQUEST_CODE -> {
                if((grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED)){
                    Toast.makeText(this, "CAMERA 成功~", Toast.LENGTH_LONG)
                }
            }
        }
    }

作者:

一位 熱愛資工領域、喜歡好笑事物、偶爾打打網球 的學生 ! For A Better Me!

發表迴響

Please log in using one of these methods to post your comment:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.