iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 12
0
Software Development

發現新大陸-Android Kotlin 開發之路系列 第 12

Day12_MyLocation_取得使用者權限

MyLocation

實作流程

Google Map Activity

Android Studio 很貼心的提供我們 GoogleMap Activity 的模組

我們只需要透過 New -> Activity -> Gallery 裡面選擇 Google Map 的選項就可以了。

這裡甚至幫你把 uses-permission 都幫你設定完成,你就不用再到 AndroidManifest 裡設定了。

建立完後,我們到 res -> values 內的 google_maps_api.xml 裡面設定 google_maps_key 。

這份檔案內有提供 google console 連結,在 console 內取得驗證碼後再貼回檔案內指定位置就可以囉。

Permission 驗證

我們希望在使用者按下按鈕後確認使用者是否有給予權限,如果沒有給予權限,則請求權限。

MainActivity.kt

private fun setupPermission() {

        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
            != PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), 101)
        } else {
            showMyLocation()
        }
    }

從下方的官方文件文檔中我們可以看到判斷是否有權限的作法,以及如何向使用者申請權限。

要特別注意的是 ActivtiyCompat.requestPermissions 裡面的第三個參數是指 requestCode 可以是任意自訂的數。

以方便後面 Callback function 使用。

override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<out String>,
        grantResults: IntArray
    ) {
       if (requestCode == 101) {
           if (grantResults[0] == PackageManager.PERMISSION_GRANTED){
               showMyLocation()
           }else{
               Toast.makeText(this, "need your permission", Toast.LENGTH_SHORT).show()
           }
       }
    }

這裡我們就可以看到,我們需要確認使用者是不是同意給予權限,並在確認給予權限後我們就可以 showLoaction 。

那我們今天就先到這裡囉,我們明天見~~


上一篇
Day11_BottomNavigation
下一篇
Day13_MyLocation_2
系列文
發現新大陸-Android Kotlin 開發之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言