내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
테스트 피드백에 따르면 접근성 단축키가 설정의 접근성 아이콘과 일치하지 않는 것으로 나타났습니다.
1. 부동 창은 systemui에 있습니다.
프레임워크베이스패키지시스템UIsrccom안드로이드시스템UI접근성플로팅메뉴접근성대상Adapter.java
아이콘을 얻는 방법:
final AccessibilityTarget target = mTargets.get(position);
holder.mIconView.setBackground(target.getIcon());
프레임워크베이스패키지시스템UIsrccom안드로이드시스템UI접근성플로팅메뉴메뉴정보Repository.java
void loadMenuTargetFeatures(OnInfoReady<List<AccessibilityTarget>> callback) {
callback.onReady(getTargets(mContext, ACCESSIBILITY_BUTTON));
}
2. 데이터 소스
frameworksbasecorejavacomandroidinternalaccessibilitydialogAccessibilityTargetHelper.java
public static List<AccessibilityTarget> getTargets(Context context,@ShortcutType int shortcutType)
접근성대상 아이콘 데이터의 출처는 다음과 같습니다.
frameworksbasecorejavacomandroidinternalaccessibilitydialogAccessibilityServiceTarget.java
AccessibilityServiceTarget(Context context, @ShortcutType int shortcutType,
@AccessibilityFragmentType int fragmentType,
@NonNull AccessibilityServiceInfo serviceInfo) {
super(context,
shortcutType,
fragmentType,
isShortcutContained(context, shortcutType,
serviceInfo.getComponentName().flattenToString()),
serviceInfo.getComponentName().flattenToString(),
serviceInfo.getResolveInfo().serviceInfo.applicationInfo.uid,
serviceInfo.getResolveInfo().loadLabel(context.getPackageManager()),
serviceInfo.getResolveInfo().loadIcon(context.getPackageManager()),
convertToKey(convertToUserType(shortcutType)));
}
배리어프리 서비스/활동을 지원하는 원본 이미지가 systemui에 바로 표시되는 것을 확인할 수 있습니다.
설정srccomandroid설정접근성제한된환경설정Helper.java
public List<RestrictedPreference> createAccessibilityServicePreferenceList(
List<AccessibilityServiceInfo> installedServices) {
Drawable icon = resolveInfo.loadIcon(mPm);
}
설정의 획득 방법은 systemUI와 동일합니다. 모두 서비스의solveInfo.loadIcon(mPm)을 통해 이루어집니다.
차이점:
설정에서 Drawable은 AdaptiveIcon으로 변환된 다음 기본 설정으로 전달됩니다. 따라서 둥근 모서리가 표시됩니다.
private RestrictedPreference createRestrictedPreference(){
preference.setIcon(Utils.getAdaptiveIcon(mContext, icon, Color.WHITE));
}
android.accessibilityservice.AccessibilityService를 통해 등록된 후 시스템에 의해 자동으로 로드됩니다.
안드로이드매니페스트.xml
<service
android:name=".MyAccessibilityService"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
android:enabled="true"
android:exported="false">
<intent-filter>
<action
android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
<meta-data
android:name="android.accessibilityservice"
android:resource="@xml/accessibility_service_config" />
</service>
res/xml/접근성_서비스_구성.xml
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/setting_accessibility_tip"
android:accessibilityEventTypes="typeWindowStateChanged"
android:packageNames="com.whatsapp"
android:accessibilityFeedbackType="feedbackGeneric"
android:notificationTimeout="100"
android:accessibilityFlags="flagDefault"
android:canRetrieveWindowContent="true"/>