implementation 'io.github.ParkSangGwon:tedpermission-normal:3.3.0'
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />
PermissionListener permissionlistener = new PermissionListener() {
@SuppressLint("NewApi")
@Override
public void onPermissionGranted() {
if (!Settings.System.canWrite(MainActivity.this)) {
permissionForWRITE_SETTINGS();
}
Toast.makeText(MainActivity.this, "Permission 허용시", Toast.LENGTH_SHORT).show();
}
@Override
public void onPermissionDenied(List<String> deniedPermissions) {
Toast.makeText(MainActivity.this, "Permission 허용 안할 시\n" + deniedPermissions.toString(), Toast.LENGTH_SHORT).show();
}
};
TedPermission.create()
.setPermissionListener(permissionlistener)
.setDeniedMessage("If you reject permission, you can not use this service\n\nPlease turn on permissions at [Setting] > [Permission]")
.setPermissions(Manifest.permission.WRITE_CONTACTS, Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_EXTERNAL_STORAGE)
.check();
WRITE_CONTACTS : 연락처 접근 권한 , READ_CONTACTS : 연락처 접근 권한 , WRITE_EXTERNAL_STORAGE : 사진, 미디어, 파일에 접근하는 권한
ContextCompat.checkSelfPermission(context, Manifest.permission);
*ContextCompat : Permission 확인할 때 SDK 버전을 고려하지 않아도 되도록 처리해둔 클래스 (내부적으로 SDK 버전 처리)
*checkSelfPermission() :
*권한유형 : (런타임권한, 특별권한 ...)
1) manifest
<uses-permission android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />
2) WRITE_SETTING 가능 여부 확인
if (!Settings.System.canWrite(MainActivity.this)) {
// permissionForWRITE_SETTINGS();
// defaultRingtoneSet();
}
3) 권한 설정 창 띄워주기
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_SETTINGS) != 0) {
Intent intent = new Intent("android.settings.action.MANAGE_WRITE_SETTINGS"); // WRITE_SETTINGS 권한을 직접 설정하는 창을 띄워줌
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("package:");
stringBuilder.append(getPackageName());
intent.setData(Uri.parse(stringBuilder.toString()));
startActivityForResult(intent, REQUEST_FOR_WRITE_SETTINGS);
return;
}