728x90
Manifest파일 추가
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
단일 권한 승인
package com.ej.datatransfer.fragment
import android.Manifest
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.os.bundleOf
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.*
import androidx.navigation.fragment.findNavController
import com.ej.datatransfer.R
import com.ej.datatransfer.ResultActivity
import com.ej.datatransfer.databinding.ActivityMainBinding
import com.ej.datatransfer.databinding.FragmentFirstBinding
import com.ej.datatransfer.viewmodel.MainViewModel
class FirstFragment : Fragment() {
lateinit var firstFragmentBinding: FragmentFirstBinding
val mainViewModel by activityViewModels<MainViewModel>()
val requestPermission = registerForActivityResult(
ActivityResultContracts.RequestPermission()
){ grated ->
if(grated){
Log.d("granted","성공")
}
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
firstFragmentBinding = DataBindingUtil.inflate(inflater,R.layout.fragment_first,container,false)
return firstFragmentBinding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
// 다른 액티비티로 이동
firstFragmentBinding.secondBtn.setOnClickListener {
requestPermission.launch(Manifest.permission.ACCESS_FINE_LOCATION)
}
}
}
여러권한 승인
package com.ej.datatransfer.fragment
import android.Manifest
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.os.bundleOf
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.*
import androidx.navigation.fragment.findNavController
import com.ej.datatransfer.R
import com.ej.datatransfer.ResultActivity
import com.ej.datatransfer.databinding.ActivityMainBinding
import com.ej.datatransfer.databinding.FragmentFirstBinding
import com.ej.datatransfer.viewmodel.MainViewModel
class FirstFragment : Fragment() {
lateinit var firstFragmentBinding: FragmentFirstBinding
val mainViewModel by activityViewModels<MainViewModel>()
val requestPermission = registerForActivityResult(
ActivityResultContracts.RequestMultiplePermissions()
){ map ->
if (map[Manifest.permission.ACCESS_FINE_LOCATION]!!){
Log.d("granted","ACCESS_FINE_LOCATION 성공")
}
if (map[Manifest.permission.ACCESS_COARSE_LOCATION]!!){
Log.d("granted","ACCESS_COARSE_LOCATION 성공")
}
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
firstFragmentBinding = DataBindingUtil.inflate(inflater,R.layout.fragment_first,container,false)
return firstFragmentBinding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
// 다른 액티비티로 이동
firstFragmentBinding.secondBtn.setOnClickListener {
requestPermission.launch(arrayOf(
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION,
))
}
}
}
728x90
'안드로이드 > 권한' 카테고리의 다른 글
안드로이드 권한 다시 뭍지 않음 일때 (0) | 2024.03.22 |
---|---|
TedPermission 보일러 플레이트 코드 (0) | 2023.03.28 |
안드로이드 권한 (0) | 2022.06.08 |