informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Masukan pengujian menunjukkan bahwa pintasan aksesibilitas tidak konsisten dengan ikon aksesibilitas di pengaturan.
1. Jendela mengambang ada di systemui
kerangka kerja paket dasar SystemUIsrccom android systemui aksesibilitas menu mengambang Aksesibilitas TargetAdapter.java
Cara mendapatkan ikonnya:
final AccessibilityTarget target = mTargets.get(position);
holder.mIconView.setBackground(target.getIcon());
kerangka kerja paket dasar SystemUIsrccom android systemui aksesibilitas mengambang menu MenuInfo Repository.java
void loadMenuTargetFeatures(OnInfoReady<List<AccessibilityTarget>> callback) {
callback.onReady(getTargets(mContext, ACCESSIBILITY_BUTTON));
}
2. Sumber data
frameworksbasecorejavacomandroidinternalaccessibilitydialogAccessibilityTargetHelper.java
public static List<AccessibilityTarget> getTargets(Context context,@ShortcutType int shortcutType)
Data Ikon Target Aksesibilitas berasal
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)));
}
Terlihat bahwa gambar asli yang mendukung Layanan/aktivitas bebas hambatan langsung ditampilkan di systemui.
Pengaturan srccomandroidsettingsaccessibilityRestrictedPreferenceHelper.java
public List<RestrictedPreference> createAccessibilityServicePreferenceList(
List<AccessibilityServiceInfo> installedServices) {
Drawable icon = resolveInfo.loadIcon(mPm);
}
Cara akuisisi pada setting sama dengan pada systemUI. Semua melalui resolInfo.loadIcon(mPm);
perbedaan:
Dalam pengaturannya, Drawable diubah menjadi AdaptiveIcon dan kemudian diteruskan ke preferensi. Jadi sudut membulat ditampilkan.
private RestrictedPreference createRestrictedPreference(){
preference.setIcon(Utils.getAdaptiveIcon(mContext, icon, Color.WHITE));
}
Itu didaftarkan melalui android.accessibilityservice.AccessibilityService dan kemudian secara otomatis dimuat oleh sistem.
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/konfigurasi_layanan_aksesibilitas.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"/>