Map에 setMyLocayionEnabled(true)를 통해 실시간 내 위치를 표시하려면 권한이 필요하다.
그럴 때는 권한을 먼저 확인해준다는 ActivityCompat.requestPermissions를 수행하자.
mMap.setMyLocationEnabled(true);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 101);
}else{
mMap.setMyLocationEnabled(true);
}
requestPermissions를 한 것에 대한 Result에 대한 처리도 해야한다.
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode){
case 101 :
if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED){
mMap.setMyLocationEnabled(true);
}
break;
}
}
이것보다 더 편한 방법이 있는데 아래와 같이 library를 import해 오는 방법이다. 중요한 점은 Module:app의 파일 안이다. Project그래들 아니다.
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.pedroSG94:AutoPermissions:1.0.3'
}
그런 다음에
public class MainActivity extends AppCompatActivity implements AutoPermissionsListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AutoPermissions.Companion.loadAllPermissions(this, 101);
}
}
라는 방식을 통해 Permission을 자동으로 허가해 주면 된다.
'프로그래밍 일반 > 안드로이드' 카테고리의 다른 글
firebase (397) | 2020.03.31 |
---|---|
Widget관련 참고할만한 자료 (385) | 2020.03.28 |
리스너와 콜백의 차이 (1) | 2020.03.27 |
firebase chatting관련 (0) | 2020.03.27 |
[안드로이드] SurfaceView관련 자료, Barcode Detection자료 (0) | 2020.03.26 |