diff --git a/res/layout/add_item_confirmation_activity.xml b/res/layout/add_item_confirmation_activity.xml index 249699bf3f..c57b75a813 100644 --- a/res/layout/add_item_confirmation_activity.xml +++ b/res/layout/add_item_confirmation_activity.xml @@ -62,8 +62,7 @@ android:text="@string/add_item_request_drag_hint" android:textSize="14sp" android:textColor="?android:attr/textColorSecondary" - android:alpha="0.7" - android:importantForAccessibility="no"/> + android:alpha="0.7"/> Touch & hold the widget to move it around the Home screen Add to Home screen + + %1$s widget added to home screen diff --git a/src/com/android/launcher3/dragndrop/AddItemActivity.java b/src/com/android/launcher3/dragndrop/AddItemActivity.java index df97bfbbda..905a701617 100644 --- a/src/com/android/launcher3/dragndrop/AddItemActivity.java +++ b/src/com/android/launcher3/dragndrop/AddItemActivity.java @@ -27,10 +27,12 @@ import static com.android.launcher3.util.Executors.MODEL_EXECUTOR; import android.annotation.TargetApi; import android.app.ActivityOptions; import android.appwidget.AppWidgetManager; +import android.appwidget.AppWidgetProviderInfo; import android.content.ClipData; import android.content.ClipDescription; import android.content.Intent; import android.content.pm.LauncherApps.PinItemRequest; +import android.content.pm.ShortcutInfo; import android.content.res.Configuration; import android.graphics.Canvas; import android.graphics.Point; @@ -39,12 +41,15 @@ import android.graphics.Rect; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; +import android.text.TextUtils; import android.view.MotionEvent; import android.view.View; import android.view.View.DragShadowBuilder; import android.view.View.OnLongClickListener; import android.view.View.OnTouchListener; import android.view.WindowManager; +import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityManager; import android.widget.TextView; import com.android.launcher3.BaseActivity; @@ -92,6 +97,7 @@ public class AddItemActivity extends BaseActivity private InvariantDeviceProfile mIdp; private BaseDragLayer mDragLayer; private AddItemWidgetsBottomSheet mSlideInView; + private AccessibilityManager mAccessibilityManager; private WidgetCell mWidgetCell; @@ -127,6 +133,8 @@ public class AddItemActivity extends BaseActivity mDragLayer = findViewById(R.id.add_item_drag_layer); mDragLayer.recreateControllers(); mWidgetCell = findViewById(R.id.widget_cell); + mAccessibilityManager = + getApplicationContext().getSystemService(AccessibilityManager.class); if (mRequest.getRequestType() == PinItemRequest.REQUEST_TYPE_SHORTCUT) { setupShortcut(); @@ -291,17 +299,25 @@ public class AddItemActivity extends BaseActivity */ public void onPlaceAutomaticallyClick(View v) { if (mRequest.getRequestType() == PinItemRequest.REQUEST_TYPE_SHORTCUT) { - ItemInstallQueue.INSTANCE.get(this).queueItem(mRequest.getShortcutInfo()); + ShortcutInfo shortcutInfo = mRequest.getShortcutInfo(); + ItemInstallQueue.INSTANCE.get(this).queueItem(shortcutInfo); logCommand(LAUNCHER_ADD_EXTERNAL_ITEM_PLACED_AUTOMATICALLY); mRequest.accept(); + CharSequence label = shortcutInfo.getLongLabel(); + if (TextUtils.isEmpty(label)) { + label = shortcutInfo.getShortLabel(); + } + sendWidgetAddedToScreenAccessibilityEvent(label.toString()); mSlideInView.close(/* animate= */ true); return; } mPendingBindWidgetId = mAppWidgetHost.allocateAppWidgetId(); + AppWidgetProviderInfo widgetProviderInfo = mRequest.getAppWidgetProviderInfo(this); boolean success = mAppWidgetManager.bindAppWidgetIdIfAllowed( - mPendingBindWidgetId, mRequest.getAppWidgetProviderInfo(this), mWidgetOptions); + mPendingBindWidgetId, widgetProviderInfo, mWidgetOptions); if (success) { + sendWidgetAddedToScreenAccessibilityEvent(widgetProviderInfo.label); acceptWidget(mPendingBindWidgetId); return; } @@ -375,6 +391,17 @@ public class AddItemActivity extends BaseActivity isSheetDark ? SystemUiController.FLAG_DARK_NAV : SystemUiController.FLAG_LIGHT_NAV); } + private void sendWidgetAddedToScreenAccessibilityEvent(String widgetName) { + if (mAccessibilityManager.isEnabled()) { + AccessibilityEvent event = + AccessibilityEvent.obtain(AccessibilityEvent.TYPE_ANNOUNCEMENT); + event.setContentDescription( + getApplicationContext().getResources().getString( + R.string.added_to_home_screen_accessibility_text, widgetName)); + mAccessibilityManager.sendAccessibilityEvent(event); + } + } + private void logCommand(StatsLogManager.EventEnum command) { getStatsLogManager().logger() .withItemInfo((ItemInfo) mWidgetCell.getWidgetView().getTag())