From 78fd360cf6e7500806634a9f7f5ab6999b815043 Mon Sep 17 00:00:00 2001 From: arangelov Date: Fri, 28 Feb 2020 15:21:20 +0000 Subject: Update strings related to intent resolver and share sheet. Test: manual Fixes: 149749960 Fixes: 149897521 Change-Id: I8a8273bec0e85bc9d21e863ded943e9e28e4dbd4 --- .../app/AbstractMultiProfilePagerAdapter.java | 39 ++++++++++++--------- .../app/ChooserMultiProfilePagerAdapter.java | 27 +++++++++++++++ .../com/android/internal/app/ResolverActivity.java | 10 +++++- .../app/ResolverMultiProfilePagerAdapter.java | 27 +++++++++++++++ core/res/res/values/strings.xml | 40 ++++++++++++++-------- core/res/res/values/symbols.xml | 12 ++++--- .../android/internal/app/ChooserActivityTest.java | 2 +- .../android/internal/app/ResolverActivityTest.java | 2 +- 8 files changed, 120 insertions(+), 39 deletions(-) diff --git a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java index bcf731d993df..18d77386d063 100644 --- a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java +++ b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java @@ -299,11 +299,8 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { .createEvent(DevicePolicyEnums.RESOLVER_EMPTY_STATE_WORK_APPS_DISABLED) .setStrings(getMetricsCategory()) .write(); - showEmptyState(activeListAdapter, - R.drawable.ic_work_apps_off, - R.string.resolver_turn_on_work_apps, - R.string.resolver_turn_on_work_apps_explanation, - (View.OnClickListener) v -> { + showWorkProfileOffEmptyState(activeListAdapter, + v -> { ProfileDescriptor descriptor = getItem( userHandleToPageIndex(activeListAdapter.getUserHandle())); showSpinner(descriptor.getEmptyStateView()); @@ -319,19 +316,13 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { DevicePolicyEnums.RESOLVER_EMPTY_STATE_NO_SHARING_TO_PERSONAL) .setStrings(getMetricsCategory()) .write(); - showEmptyState(activeListAdapter, - R.drawable.ic_sharing_disabled, - R.string.resolver_cant_share_with_personal_apps, - R.string.resolver_cant_share_cross_profile_explanation); + showNoWorkToPersonalIntentsEmptyState(activeListAdapter); } else { DevicePolicyEventLogger.createEvent( DevicePolicyEnums.RESOLVER_EMPTY_STATE_NO_SHARING_TO_WORK) .setStrings(getMetricsCategory()) .write(); - showEmptyState(activeListAdapter, - R.drawable.ic_sharing_disabled, - R.string.resolver_cant_share_with_work_apps, - R.string.resolver_cant_share_cross_profile_explanation); + showNoPersonalToWorkIntentsEmptyState(activeListAdapter); } return false; } @@ -340,6 +331,15 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { return activeListAdapter.rebuildList(doPostProcessing); } + protected abstract void showWorkProfileOffEmptyState( + ResolverListAdapter activeListAdapter, View.OnClickListener listener); + + protected abstract void showNoPersonalToWorkIntentsEmptyState( + ResolverListAdapter activeListAdapter); + + protected abstract void showNoWorkToPersonalIntentsEmptyState( + ResolverListAdapter activeListAdapter); + void showEmptyState(ResolverListAdapter listAdapter) { UserHandle listUserHandle = listAdapter.getUserHandle(); if (UserHandle.myUserId() == listUserHandle.getIdentifier() @@ -353,16 +353,16 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { showEmptyState(listAdapter, R.drawable.ic_no_apps, R.string.resolver_no_apps_available, - R.string.resolver_no_apps_available_explanation); + /* subtitleRes */ 0); } } - private void showEmptyState(ResolverListAdapter activeListAdapter, + protected void showEmptyState(ResolverListAdapter activeListAdapter, @DrawableRes int iconRes, @StringRes int titleRes, @StringRes int subtitleRes) { showEmptyState(activeListAdapter, iconRes, titleRes, subtitleRes, /* buttonOnClick */ null); } - private void showEmptyState(ResolverListAdapter activeListAdapter, + protected void showEmptyState(ResolverListAdapter activeListAdapter, @DrawableRes int iconRes, @StringRes int titleRes, @StringRes int subtitleRes, View.OnClickListener buttonOnClick) { ProfileDescriptor descriptor = getItem( @@ -379,7 +379,12 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { title.setText(titleRes); TextView subtitle = emptyStateView.findViewById(R.id.resolver_empty_state_subtitle); - subtitle.setText(subtitleRes); + if (subtitleRes != 0) { + subtitle.setVisibility(View.VISIBLE); + subtitle.setText(subtitleRes); + } else { + subtitle.setVisibility(View.GONE); + } Button button = emptyStateView.findViewById(R.id.resolver_empty_state_button); button.setVisibility(buttonOnClick != null ? View.VISIBLE : View.GONE); diff --git a/core/java/com/android/internal/app/ChooserMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/ChooserMultiProfilePagerAdapter.java index b39d42ec1e96..2167b1ebd473 100644 --- a/core/java/com/android/internal/app/ChooserMultiProfilePagerAdapter.java +++ b/core/java/com/android/internal/app/ChooserMultiProfilePagerAdapter.java @@ -20,6 +20,7 @@ import android.annotation.Nullable; import android.content.Context; import android.os.UserHandle; import android.view.LayoutInflater; +import android.view.View; import android.view.ViewGroup; import com.android.internal.R; @@ -169,6 +170,32 @@ public class ChooserMultiProfilePagerAdapter extends AbstractMultiProfilePagerAd return ResolverActivity.METRICS_CATEGORY_CHOOSER; } + @Override + protected void showWorkProfileOffEmptyState(ResolverListAdapter activeListAdapter, + View.OnClickListener listener) { + showEmptyState(activeListAdapter, + R.drawable.ic_work_apps_off, + R.string.resolver_turn_on_work_apps_share, + /* subtitleRes */ 0, + listener); + } + + @Override + protected void showNoPersonalToWorkIntentsEmptyState(ResolverListAdapter activeListAdapter) { + showEmptyState(activeListAdapter, + R.drawable.ic_sharing_disabled, + R.string.resolver_cant_share_with_work_apps, + R.string.resolver_cant_share_cross_profile_explanation); + } + + @Override + protected void showNoWorkToPersonalIntentsEmptyState(ResolverListAdapter activeListAdapter) { + showEmptyState(activeListAdapter, + R.drawable.ic_sharing_disabled, + R.string.resolver_cant_share_with_personal_apps, + R.string.resolver_cant_share_cross_profile_explanation); + } + class ChooserProfileDescriptor extends ProfileDescriptor { private ChooserActivity.ChooserGridAdapter chooserGridAdapter; private RecyclerView recyclerView; diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index f745e4376896..6cf818b0db6f 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -1572,9 +1572,17 @@ public class ResolverActivity extends Activity implements } private void resetTabsHeaderStyle(TabWidget tabWidget) { + String workContentDescription = getString(R.string.resolver_work_tab_accessibility); + String personalContentDescription = getString(R.string.resolver_personal_tab_accessibility); for (int i = 0; i < tabWidget.getChildCount(); i++) { - TextView title = tabWidget.getChildAt(i).findViewById(android.R.id.title); + View tabView = tabWidget.getChildAt(i); + TextView title = tabView.findViewById(android.R.id.title); title.setTextColor(getColor(R.color.resolver_tabs_inactive_color)); + if (title.getText().equals(getString(R.string.resolver_personal_tab))) { + tabView.setContentDescription(personalContentDescription); + } else if (title.getText().equals(getString(R.string.resolver_work_tab))) { + tabView.setContentDescription(workContentDescription); + } } } diff --git a/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java index f6382d397d6f..0440f5e92ce4 100644 --- a/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java +++ b/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java @@ -20,6 +20,7 @@ import android.annotation.Nullable; import android.content.Context; import android.os.UserHandle; import android.view.LayoutInflater; +import android.view.View; import android.view.ViewGroup; import android.widget.ListView; @@ -161,6 +162,32 @@ public class ResolverMultiProfilePagerAdapter extends AbstractMultiProfilePagerA return ResolverActivity.METRICS_CATEGORY_RESOLVER; } + @Override + protected void showWorkProfileOffEmptyState(ResolverListAdapter activeListAdapter, + View.OnClickListener listener) { + showEmptyState(activeListAdapter, + R.drawable.ic_work_apps_off, + R.string.resolver_turn_on_work_apps_view, + /* subtitleRes */ 0, + listener); + } + + @Override + protected void showNoPersonalToWorkIntentsEmptyState(ResolverListAdapter activeListAdapter) { + showEmptyState(activeListAdapter, + R.drawable.ic_sharing_disabled, + R.string.resolver_cant_access_work_apps, + R.string.resolver_cant_access_work_apps_explanation); + } + + @Override + protected void showNoWorkToPersonalIntentsEmptyState(ResolverListAdapter activeListAdapter) { + showEmptyState(activeListAdapter, + R.drawable.ic_sharing_disabled, + R.string.resolver_cant_access_personal_apps, + R.string.resolver_cant_access_personal_apps_explanation); + } + class ResolverProfileDescriptor extends ProfileDescriptor { private ResolverListAdapter resolverListAdapter; final ListView listView; diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index 2356b1737acd..addcd81ae5c8 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -5385,26 +5385,36 @@ %1$s has been put into the RESTRICTED bucket - + Personal - + Work - + + Personal view + + Work view + Can\u2019t share with work apps - + Can\u2019t share with personal apps - - Your IT admin blocked sharing between personal and work apps - - Turn on work apps - - Turn on work apps to access work apps & contacts - + + Your IT admin blocked sharing between personal and work profiles + + Can\u2019t access work apps + + Your IT admin doesn\u2019t let you view personal content in work apps + + Can\u2019t access personal apps + + Your IT admin doesn\u2019t let you view work content in personal apps + + Turn on work profile to share content + + Turn on work profile to view content + No apps available - - We couldn\u2019t find any apps - - Switch on work + + Turn on Record or play audio in telephony calls diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index c1d8168e6287..0971aadfe4ab 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -3874,7 +3874,9 @@ + + @@ -3886,11 +3888,13 @@ - - + + + + + + - - diff --git a/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java b/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java index 6d0e58bc89be..24e96d4b8463 100644 --- a/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java +++ b/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java @@ -1340,7 +1340,7 @@ public class ChooserActivityTest { onView(withText(R.string.resolver_work_tab)).perform(click()); waitForIdle(); - onView(withText(R.string.resolver_turn_on_work_apps)) + onView(withText(R.string.resolver_turn_on_work_apps_share)) .check(matches(isDisplayed())); } diff --git a/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java b/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java index a7bf48858e42..9d1ca615e54b 100644 --- a/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java +++ b/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java @@ -624,7 +624,7 @@ public class ResolverActivityTest { onView(withText(R.string.resolver_work_tab)).perform(click()); waitForIdle(); - onView(withText(R.string.resolver_turn_on_work_apps)) + onView(withText(R.string.resolver_turn_on_work_apps_view)) .check(matches(isDisplayed())); } -- cgit v1.2.3-59-g8ed1b