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" />
'안드로이드 코드' 카테고리의 다른 글
[오류해결] org.threeten.bp.zone.ZoneRulesException: No time-zone data files registered (0) | 2021.10.11 |
---|---|
안드로이드 EditText 입력방법 및 다양한 옵션 추가하기 (0) | 2021.08.15 |
안드로이드 홈버튼, 뒤로가기버튼, 강제종료 코드 (0) | 2021.07.29 |
안드로이드 백그라운드에서 계속 위치 받아오기 (2) | 2021.04.07 |
20201228 EditText 밑줄 없애기 (java코드) (0) | 2020.12.28 |
댓글