Loading res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -10343,4 +10343,7 @@ <string name="contextual_card_feedback_send">Send feedback</string> <!-- String for contextual card feedback dialog [CHAR LIMIT=NONE] --> <string name="contextual_card_feedback_confirm_message">Would you like to give us feedback on this suggestion?</string> <!-- Toast message for copy action of Copyable Slice [CHAR LIMIT=NONE] --> <string name="copyable_slice_toast"><xliff:g id="copy_content" example="Phone number">%1$s</xliff:g> copied to clipboard.</string> </resources> src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java +20 −2 Original line number Diff line number Diff line Loading @@ -16,6 +16,10 @@ package com.android.settings.deviceinfo; import static android.content.Context.CLIPBOARD_SERVICE; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; Loading @@ -23,6 +27,7 @@ import android.telephony.TelephonyManager; import android.text.BidiFormatter; import android.text.TextDirectionHeuristics; import android.text.TextUtils; import android.widget.Toast; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; Loading @@ -30,12 +35,14 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.slices.Copyable; import com.android.settingslib.DeviceInfoUtils; import java.util.ArrayList; import java.util.List; public class PhoneNumberPreferenceController extends BasePreferenceController { public class PhoneNumberPreferenceController extends BasePreferenceController implements Copyable { private final static String KEY_PHONE_NUMBER = "phone_number"; Loading Loading @@ -91,6 +98,17 @@ public class PhoneNumberPreferenceController extends BasePreferenceController { return true; } @Override public void copy() { final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService( CLIPBOARD_SERVICE); clipboard.setPrimaryClip(ClipData.newPlainText("text", getFirstPhoneNumber())); final String toast = mContext.getString(R.string.copyable_slice_toast, mContext.getText(R.string.status_number)); Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); } private CharSequence getFirstPhoneNumber() { final List<SubscriptionInfo> subscriptionInfoList = mSubscriptionManager.getActiveSubscriptionInfoList(); Loading src/com/android/settings/slices/CopyableSlice.java→src/com/android/settings/slices/Copyable.java +1 −1 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ package com.android.settings.slices; /** * Provide the copy ability for preference controller to copy the data to the clipboard. */ public interface CopyableSlice { public interface Copyable { /** * Copy the key slice information to the clipboard. * It is highly recommended to show the toast to notify users when implemented this function. Loading src/com/android/settings/slices/SliceBroadcastReceiver.java +2 −2 Original line number Diff line number Diff line Loading @@ -185,7 +185,7 @@ public class SliceBroadcastReceiver extends BroadcastReceiver { final BasePreferenceController controller = getPreferenceController(context, key); if (!(controller instanceof CopyableSlice)) { if (!(controller instanceof Copyable)) { throw new IllegalArgumentException( "Copyable action passed for a non-copyable key:" + key); } Loading @@ -198,7 +198,7 @@ public class SliceBroadcastReceiver extends BroadcastReceiver { return; } ((CopyableSlice) controller).copy(); ((Copyable) controller).copy(); } /** Loading src/com/android/settings/slices/SliceBuilderUtils.java +1 −1 Original line number Diff line number Diff line Loading @@ -94,7 +94,7 @@ public class SliceBuilderUtils { return buildUnavailableSlice(context, sliceData); } if (controller instanceof CopyableSlice) { if (controller instanceof Copyable) { return buildCopyableSlice(context, sliceData, controller); } Loading Loading
res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -10343,4 +10343,7 @@ <string name="contextual_card_feedback_send">Send feedback</string> <!-- String for contextual card feedback dialog [CHAR LIMIT=NONE] --> <string name="contextual_card_feedback_confirm_message">Would you like to give us feedback on this suggestion?</string> <!-- Toast message for copy action of Copyable Slice [CHAR LIMIT=NONE] --> <string name="copyable_slice_toast"><xliff:g id="copy_content" example="Phone number">%1$s</xliff:g> copied to clipboard.</string> </resources>
src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java +20 −2 Original line number Diff line number Diff line Loading @@ -16,6 +16,10 @@ package com.android.settings.deviceinfo; import static android.content.Context.CLIPBOARD_SERVICE; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; Loading @@ -23,6 +27,7 @@ import android.telephony.TelephonyManager; import android.text.BidiFormatter; import android.text.TextDirectionHeuristics; import android.text.TextUtils; import android.widget.Toast; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; Loading @@ -30,12 +35,14 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.slices.Copyable; import com.android.settingslib.DeviceInfoUtils; import java.util.ArrayList; import java.util.List; public class PhoneNumberPreferenceController extends BasePreferenceController { public class PhoneNumberPreferenceController extends BasePreferenceController implements Copyable { private final static String KEY_PHONE_NUMBER = "phone_number"; Loading Loading @@ -91,6 +98,17 @@ public class PhoneNumberPreferenceController extends BasePreferenceController { return true; } @Override public void copy() { final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService( CLIPBOARD_SERVICE); clipboard.setPrimaryClip(ClipData.newPlainText("text", getFirstPhoneNumber())); final String toast = mContext.getString(R.string.copyable_slice_toast, mContext.getText(R.string.status_number)); Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); } private CharSequence getFirstPhoneNumber() { final List<SubscriptionInfo> subscriptionInfoList = mSubscriptionManager.getActiveSubscriptionInfoList(); Loading
src/com/android/settings/slices/CopyableSlice.java→src/com/android/settings/slices/Copyable.java +1 −1 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ package com.android.settings.slices; /** * Provide the copy ability for preference controller to copy the data to the clipboard. */ public interface CopyableSlice { public interface Copyable { /** * Copy the key slice information to the clipboard. * It is highly recommended to show the toast to notify users when implemented this function. Loading
src/com/android/settings/slices/SliceBroadcastReceiver.java +2 −2 Original line number Diff line number Diff line Loading @@ -185,7 +185,7 @@ public class SliceBroadcastReceiver extends BroadcastReceiver { final BasePreferenceController controller = getPreferenceController(context, key); if (!(controller instanceof CopyableSlice)) { if (!(controller instanceof Copyable)) { throw new IllegalArgumentException( "Copyable action passed for a non-copyable key:" + key); } Loading @@ -198,7 +198,7 @@ public class SliceBroadcastReceiver extends BroadcastReceiver { return; } ((CopyableSlice) controller).copy(); ((Copyable) controller).copy(); } /** Loading
src/com/android/settings/slices/SliceBuilderUtils.java +1 −1 Original line number Diff line number Diff line Loading @@ -94,7 +94,7 @@ public class SliceBuilderUtils { return buildUnavailableSlice(context, sliceData); } if (controller instanceof CopyableSlice) { if (controller instanceof Copyable) { return buildCopyableSlice(context, sliceData, controller); } Loading