[Android] 브로드캐스트 수신자(=브로드캐스트 리시버) - (2)사용법(데이터 보내고),(데이터 받고),(데이터 뽑고),(화면에 뿌려주고)
이 과정 후, 추가 한거,
근데 앞에 과정 필요 없음,, (이 포스터는, 그냥 위험 권한만 어떻게 처리해서 잘 사용하는 방법인지 정리한거임)
위험 권한 부여하는 방법을 해볼거다.
"위험 권한" 이라는 것이 "마시멜로 23"버전 이후부터 생겼음.
(사용자가 앱을 실행 했을 때, "어떤 권한을 허용해 줄까요?"라는 메시지를 강제로 띄워주도록 바뀜!!) - "마시멜로 23"버전 부터 바뀜
이젠 대화상자를 띄워주어야한다.
띄워줄려면 대화상자 띄워주는 방법을 알아야한다.
왜냐하면 버전22 전 까지는 그냥 자동으로 해주니깐 안해본것이다....
그래서 이젠
"마시멜로 버전23" 이후 버전을 앞으로 이용해야 하니깐
해볼 것이다,
- 참고 -
1.
일딴, 위험 권한을 부여 할려고 하는데,
권한이 이미 부여된 경우가 있을 수가 있어요...
이렇게 확인 할 수 있음.
일딴 권한이 있는지 없는지만 체크함.
그러면 권한이 없는 경우에 권한을 주겠다라고 코드를 짤거다 (밑에코드)
(앱을 실행 했을 때, 권한이 없으면 한번 대화상자 띄워주고, 권한을 주면, 그 다음부터는 앱이 그 권한을 계속 쓸 수가 있다.)
이제 대화상자를 띄워서 시스템이 정상적으로 이 권한이 부여가 "됬다, 아니다"를 받으면,
우리쪽으로 알려 주어야 되겠죠?!!?!?!!!!
그래서 콜백 함수(onRequestPermissionsResult())를 사용한다. - (오버라이드)
이렇게 하고 돌리면
결과가 "SMS 수신 권한 주어져 있음." 이라고 뜨는데
적용하고 다시 실행하면
똑같음...
다시 실행해도
"SMS 수신 권한이 주어져 있음" 이라고 뜨면,,,,음...
이렇게 해주면 됨
이렇게 뜨는데,,,
그냥 앱을 삭제하고 다시 깔아서 실행되면 이렇게 됨.
(앱을 꺼도 다시 이렇게 뜸) - 거부or 허용 선택 할때까지 이렇게 뜸.
"허용" 클릭하면 SMS수신이 가능해짐.
근데, (밑에 코드)
그냥 나중에 코딩 할때 그냥 주석처리하던지, 빼버리던지해서
권한 안되어 있으면,
걍 바로 권한창 뜨게 해버리는게 낳을거 같음.
나중에 위험권한 코드 사용시,
이런 방법으로 처리를 해주면 된다.
- 그냥 한번 더 설명 -
사용자가 중간중간 위험권한을 부여하지 않게 하는 형태로(바로 자동으로 부여하고 싶으면)
targetSdkVersion을 22로 맞쳐주면 된다.
근데,
중간중간 위험권한 부여하고 싶으면 23이상으로 버전 맞쳐주면됨.
2. 사용 코드
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 권한이 이미 부여된 경우가 있을 수가 있어요.. (권한 확인하는 코드)
int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.RECEIVE_SMS);
if(permissionCheck == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this,"SMS 수신 권한 주어져 있음",Toast.LENGTH_LONG).show();
} else{
//else if(permissionCheck == PackageManager.PERMISSION_DENIED){
Toast.makeText(this,"SMS 수신 권한 없음.",Toast.LENGTH_LONG).show();
}
}
// 여기서 권한이 부여가 됬는지, 안됬는지 확인을 여기서 할 수가 있다.
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode){
case 22:
if(grantResults.length > 0){
if(grantResults[0] == PackageManager.PERMISSION_GRANTED){ //PERMISSION_GRANTED 사용자가 수락을 할 경우
Toast.makeText(this,"SMS 수신 권한을 사용자가 승인함.",Toast.LENGTH_LONG).show();
}else if(grantResults[0] == PackageManager.PERMISSION_DENIED){ // 사용자가 거부할 경우
Toast.makeText(this,"SMS 수신 권한을 사용자가 거부함.",Toast.LENGTH_LONG).show();
}
}else {
Toast.makeText(this,"SMS 수신 권한을 부여받지 못함.",Toast.LENGTH_LONG).show();
}
}
}
}
'■ Android > Tip' 카테고리의 다른 글
[Android] 버전 바꾸기 - Properites탭 위치, Bulid Tools Version 바꾸기 (0) | 2020.04.26 |
---|---|
[Android] 위험 권한 부여 - 사용법 (0) | 2020.04.25 |
[Android] 브로드캐스트 수신자(=브로드캐스트 리시버) - (2)사용법(데이터 보내고),(데이터 받고),(데이터 뽑고),(화면에 뿌려주고) (0) | 2020.04.25 |
[Android] 브로드캐스트 수신자(=브로드캐스트 리시버) - (1)사용법(만드는 방법),(동작과정) (0) | 2020.04.25 |
[Android] 서비스 컴포넌트 바인드 서비스 - 사용법 (0) | 2020.04.24 |