RN을 통해서 앱을 만들경우, 장애인을 위한 서비스를 만들 떄 엑세스 빌리티 서비스를 사용할 경우가 있다.
우리가 앱을 배포하지 않고, 단순 apk 다운로드로 접근성 권한을 가져오려면(즉, 풀퍼가 불명확한 앱), 다음과 같은 단계를 따라야 한다.
위와 같은 3단계를 이행해야 앱의 접근섣 권한을 허용할 수 있다.
하지만, 앱을 구글 플레이스토어나 원스토어 같은 곳에 배포 하였다면(즉, 출처가 명확한 앱),
위와 같은 단계를 무시하고,
바로 접근성 -> 앱 -> 접근성 권한 허용만 하면 된다.
이 방법을 RN 코드로 보자면,
import android.provider.Settings;
import android.text.TextUtils;
// 접근성 설정이 활성화되었는지 확인하는 메서드
private boolean isAccessibilityServiceEnabled(Context context, String serviceName) {
try {
String enabledServices = Settings.Secure.getString(
context.getContentResolver(),
Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES
);
return enabledServices != null && enabledServices.contains(serviceName);
} catch (Exception e) {
return false;
}
}
// 접근성 설정 여부를 체크하고, 설정이 안 되어 있으면 유도
if (!restrictedCheckDone) {
String serviceName = context.getPackageName() + "/" + MyAccessibilityService.class.getName();
if (!isAccessibilityServiceEnabled(context, serviceName)) {
// 접근성 설정이 활성화되지 않음 → 설정 화면으로 이동
Toast.makeText(context,
"먼저 접근성 설정 화면에서 'Restricted Allow' 옵션을 활성화해 주세요.",
Toast.LENGTH_LONG
).show();
Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
// "E_RESTRICTED" 오류 반환 → 현재 작업을 중단하고 설정하도록 유도
promise.reject("E_RESTRICTED", "Need to allow restricted setting first");
return;
}
// 접근성 설정이 활성화되었음 → restrictedCheckDone 저장
prefs.edit().putBoolean(KEY_RESTRICTED_CHECK_DONE, true).apply();
}
위와 같은 방법으로, 사용자가 접근성 권한을 허용하게 하고, 이 여부를 체크할 수 있다.