안드로이드 코드

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

우딬 2021. 8. 3. 17:39

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" />