본문 바로가기

프로그래밍 일반/안드로이드

Permission관련

 

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