마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

다시 권한요청시 다시보지않기 옵션을 클릭한경우를 확인하는 방법이 궁금합니다. [closed]

0 추천

이미지 버튼을 눌럿을때 연동하는 방식은 해결햇습니다.

전체적인 권한도 작동하는데 문제는 제차 권한 요청시 다시보지않기 옵션을 선택한걸 확인하는

방법이 궁금합니다.

@Override
            public void onClick(View v) {
                //마쉬멜로우이상인지 체크
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                    //전회걸기 권한을 확인
                    int permissionResult = checkSelfPermission(Manifest.permission.CALL_PHONE);
                    //해당 어플이 거부되있는지 확인
                    if (permissionResult == PackageManager.PERMISSION_DENIED) {
                        //사용자가 한번이라도 거부햇는지 확인
                        if (shouldShowRequestPermissionRationale(Manifest.permission.CALL_PHONE)) {
                            AlertDialog.Builder dialog = new AlertDialog.Builder(AdminMain.this);
                            dialog.setTitle("권한이 필요합니다.")
                                    .setMessage("이 기능을 사용하기 위해서는 단말기의 \"전화걸기\"권한이 필요합니다 계속하시겠습니까?")
                                    .setPositiveButton("네", new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialog, int which) {
                                            //새로 인스턴스를 생성햇기떄문에 한번더 버전체크를한다
                                            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                                                //안드로이드에 권한을 요청합니다.
                                                requestPermissions(new String[]{Manifest.permission.CALL_PHONE}, 1000);
                                            }
                                        }
                                    })
                                    .setNegativeButton("아니요", new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialog, int which) {
                                            Toast.makeText(AdminMain.this, "기능을 취소했습니다", Toast.LENGTH_SHORT).show();
                                        }
                                    })
                                    .create()
                                    .show();
                        }//최초 권한요청
                        else {
                            requestPermissions(new String[]{Manifest.permission.CALL_PHONE}, 1000);
                        }
                    }//권한 있을경우
                    else {
                        Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + tel));
                        startActivity(intent);
                    }
                }//마쉬멜로우 미만
                else {
                    Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + tel));
                    startActivity(intent);
                }
            }
        });
    }

확인하는 방법이 아래쪽 응답확인 메서드에서 확인하는 방법이 있나요??

(응답확인 메서드는 안올렷습니다)

질문을 종료한 이유: 해결됨
시로이 (260 포인트) 님이 11월 21일 질문
시로이님이 4일 closed

2개의 답변

0 추천
SharedPreferences 같은데 선택 여부를 저장 해 둬서. 저장되어 있으면, 팝업을 안 띄우는 방식으로 구현하시면 됩니다.
익명사용자 님이 11월 21일 답변
구글검색 한참하다가 결국 다른방식 찾앗네요..
토스트메세지로 루트확인햇고 이제 관련코드만 작성하면됩니다...
0 추천

저처럼 힘드신분들을 위해서 코드를 남겨둡니다.

저의경우 위쪽 코드에서 권한요청 응답하는부분에서 코드를 추가햇습니다 참고하시길....

@RequiresApi(api = Build.VERSION_CODES.M)
	@Override
	public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
		if (requestCode == 1000) {
			if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
				Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + tel));
				if (checkSelfPermission(Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
					// TODO: Consider calling
					//    Activity#requestPermissions
					// here to request the missing permissions, and then overriding
					//   public void onRequestPermissionsResult(int requestCode, String[] permissions,
					//                                          int[] grantResults)
					// to handle the case where the user grants the permission. See the documentation
					// for Activity#requestPermissions for more details.
					return;
				}
				startActivity(intent);/ 전화걸기를 작동합니다
			}
			//권한 요청 거부시 메세지가 뜨게됩니다.
			else if(shouldShowRequestPermissionRationale(Manifest.permission.CALL_PHONE)){//다시묻지않음을 체크햇는지 확인하고 아닐경우 권한 거부메세지가 발동합니다.
					Toast.makeText(AdminMain.this, "전화요청을 거부했습니다.", Toast.LENGTH_SHORT).show();

			}//다시묻지않음 체크할시 이메세지가 출력됩니다.
			else{
				Toast.makeText(AdminMain.this, "다시묻지않음.", Toast.LENGTH_SHORT).show();
			}
		}
	}//기본권한 요청 메소드 종료

 

시로이 (260 포인트) 님이 4일 답변
...