투케이2K

142. (AndroidStudio/android/java) tedpermission (테드 퍼미션) 라이브러리 사용해 퍼미션 요청 및 권한 거부 시 애플리케이션 설정 이동 본문

Android

142. (AndroidStudio/android/java) tedpermission (테드 퍼미션) 라이브러리 사용해 퍼미션 요청 및 권한 거부 시 애플리케이션 설정 이동

투케이2K 2021. 5. 13. 09:04
반응형

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : AndroidStudio

개발 언어 : java

/* =========================== */

/* =========================== */

[소스 코드]

 

//TODO [필요 라이브러리]
implementation 'gun0912.ted:tedpermission:2.2.2'








//TODO [Ted 라이브러리 사용해 퍼미션 확인 수행 메소드]
private void permissionCheck() {
	try {
		Log.d("---","---");
		Log.d("//===========//","================================================");
		Log.d("","\n"+"[A_Main > permissionCheck() 메소드 : 전체 퍼미션 부여 확인 실행]");
		Log.d("//===========//","================================================");
		Log.d("---","---");
		TedPermission.with(A_Main.this)
				.setPermissionListener(permissionlistener) //퍼미션이 부여되었는지 확인 메소드 호출
				/*.setDeniedMessage("권한에 대한 허가를 거부하면 모바일을 사용할 수 없습니다.\n" +
						"\n" + "[설정]> [권한]에서 권한을 켜십시오.")
				 */
				.setPermissions(
						Manifest.permission.READ_PHONE_STATE,
						Manifest.permission.WRITE_EXTERNAL_STORAGE,
						Manifest.permission.BLUETOOTH,
						Manifest.permission.BLUETOOTH_ADMIN,
						Manifest.permission.ACCESS_COARSE_LOCATION,
						Manifest.permission.ACCESS_FINE_LOCATION,
						Manifest.permission.WRITE_EXTERNAL_STORAGE,
						Manifest.permission.CAMERA,
						Manifest.permission.READ_EXTERNAL_STORAGE,
						Manifest.permission.READ_CONTACTS,
						Manifest.permission.WRITE_CONTACTS)
				.check();
	}
	catch (Exception e){
		e.printStackTrace();
	}
}
//TODO [퍼미션이 부여되었는지 확인 메소드]
private PermissionListener permissionlistener = new PermissionListener() {
	@Override
	public void onPermissionGranted() {
		Log.d("---","---");
		Log.w("//===========//","================================================");
		Log.d("","\n"+"[A_Main > onPermissionGranted() 메소드 : 전체 퍼미션 부여 확인 성공]");
		Log.w("//===========//","================================================");
		Log.d("---","---");
		//TODO [정상 수행할 동작 정의]
	}
	@Override
	public void onPermissionDenied(List<String> deniedPermissions) {
		Log.d("---","---");
		Log.e("//===========//","================================================");
		Log.d("","\n"+"[A_Main > onPermissionGranted() 메소드 : 전체 퍼미션 부여 확인 실패]");
		Log.d("","\n"+"[거부된 권한 : "+String.valueOf(deniedPermissions.toString())+"]");
		Log.e("//===========//","================================================");
		Log.d("---","---");

		//TODO [연속적으로 퍼미션을 허용 받기위해 재귀함수 루틴 사용]
		//permissionCheck();

		//TODO [Alert 팝업창 알림 실시]
		getAlertDialog("[알림]",
				"권한 허가를 동의 하지않으셨습니다."+"\n"
						+"일부 기능 사용에 제한이 있을 수 있습니다"+"\n"
						+"[설정] > [권한]에서 거부한 권한을 활성해주세요",
				"설정", "취소", "");

	}
};








//TODO [권한 거부 시 팝업창 호출 부분] 
public void getAlertDialog(String header, String content, String ok, String no, String normal){
	//TODO 타이틀 및 내용 표시
	final String Tittle = header;
	final String Message = content;

	//TODO 버튼 이름 정의
	String buttonNo = no;
	String buttonYes = ok;
	String buttonNature = normal;

	//TODO AlertDialog 팝업창 생성
	new AlertDialog.Builder(A_Main.this)
			.setTitle(Tittle) //[팝업창 타이틀 지정]
			//.setIcon(R.drawable.tk_app_icon) //[팝업창 아이콘 지정]
			.setMessage(Message) //[팝업창 내용 지정]
			.setCancelable(false) //[외부 레이아웃 클릭시도 팝업창이 사라지지않게 설정]
			.setPositiveButton(buttonYes, new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					// TODO [애플리케이션 설정 창으로 이동한다]
					Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
					intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
					Uri uri = Uri.fromParts("package", getPackageName(), null);
					intent.setData(uri);
					startActivity(intent);
					overridePendingTransition(0,0);
				}
			})
			.setNegativeButton(buttonNo, new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
				}
			})
			.setNeutralButton(buttonNature, new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
				}
			})
			.show();
}

/* =========================== */

/* =========================== */

[결과 출력]

/* =========================== */

 

반응형
Comments