τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Τα σχόλια της δοκιμής δείχνουν ότι οι συντομεύσεις προσβασιμότητας δεν συνάδουν με τα εικονίδια προσβασιμότητας στις ρυθμίσεις.
1. Το αιωρούμενο παράθυρο είναι σε systemui
FrameworksbasepackagesSystemUIsrccomandroidsystemuiaccessibilityfloatingmenuAccessibilityTargetAdapter.java
Πώς να αποκτήσετε το εικονίδιο:
final AccessibilityTarget target = mTargets.get(position);
holder.mIconView.setBackground(target.getIcon());
FrameworksbasepackagesSystemUIsrccomandroidsystemuiaccessibilityfloatingmenuMenuInfoRepository.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)
Τα δεδομένα του εικονιδίου AccessibilityTarget προέρχονται από
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.
Settingsrccomandroid settingssaccessibilityRestrictedPreferenceHelper.java
public List<RestrictedPreference> createAccessibilityServicePreferenceList(
List<AccessibilityServiceInfo> installedServices) {
Drawable icon = resolveInfo.loadIcon(mPm);
}
Η μέθοδος απόκτησης στη ρύθμιση είναι η ίδια όπως στο systemUI. Όλα μέσω του solutionInfo.loadIcon(mPm) της υπηρεσίας.
η διαφορά:
Στη ρύθμιση, το Drawable μετατρέπεται σε AdaptiveIcon και στη συνέχεια περνά στην προτίμηση. Έτσι εμφανίζονται στρογγυλεμένες γωνίες.
private RestrictedPreference createRestrictedPreference(){
preference.setIcon(Utils.getAdaptiveIcon(mContext, icon, Color.WHITE));
}
Εγγράφεται μέσω του android.accessibilityservice.AccessibilityService και στη συνέχεια φορτώνεται αυτόματα από το σύστημα.
AndroidManifest.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/accessibility_service_config.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"/>