본문 바로가기
안드로이드 코드

[구글 스토어 API 29] 초 간단 백그라운드 위치 권환 (항상 허용 코드)

by 우딬 2021. 8. 3.

API29일때 가능한 코드입니다. API30이상일때는 사용되지 않습니다.

하지만 29로 사용시 구글 스토어에 등록이 되지 않습니다.

안드로이드 11 버전

11버전은 처음창에 항상 허용이 안뜬다.
그래서 Allow in settings 메뉴에 가서 항상허용을 해 주어야한다.

안드로이드 10 버전

 

안드로이드 9 이하 버전

 

자바 코드

    public class locationActivity extends AppCompatActivity {
    
        //처음시작할때 뜨는 창
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.location_activity);
                ActivityCompat.requestPermissions(locationActivity.this,
                new String[]{permission.ACCESS_FINE_LOCATION,
                            permission.ACCESS_COARSE_LOCATION,
                            permission.ACCESS_BACKGROUND_LOCATION}, 1999);

                //1999는 요청 코드로 어떤 숫자를 써도 상관 없습니다.
        }
        
       //권환 설정 후 돌아오는 창
        @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
            switch (requestCode){
                case 1999:
                    if (ActivityCompat.checkSelfPermission(locationActivity.this, 
                    Manifest.permission.ACCESS_BACKGROUND_LOCATION) == PackageManager.PERMISSION_GRANTED
                    || ActivityCompat.checkSelfPermission(locationActivity.this, 
                    Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED ) {
                    //설정 완료시

                    }else{
                    //설정 취소시
                        Toast.makeText(locationActivity.this, "권한 설정을 취소했습니다.", Toast.LENGTH_SHORT).show();
                        finish();
                }
            }
        }
}

메니페스트

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

댓글