diff options
3 files changed, 34 insertions, 20 deletions
diff --git a/android/app/res/values/strings.xml b/android/app/res/values/strings.xml index 8e65894690..e6409cbe42 100644 --- a/android/app/res/values/strings.xml +++ b/android/app/res/values/strings.xml @@ -211,14 +211,12 @@ <string name="transfer_clear_dlg_msg">All items will be cleared from the list.</string> <string name="outbound_noti_title">Bluetooth share: Sent files</string> <string name="inbound_noti_title">Bluetooth share: Received files</string> - <plurals name="noti_caption_unsuccessful"> - <item quantity="one"><xliff:g id="unsuccessful_number">%1$d</xliff:g> unsuccessful.</item> - <item quantity="other"><xliff:g id="unsuccessful_number">%1$d</xliff:g> unsuccessful.</item> - </plurals> - <plurals name="noti_caption_success"> - <item quantity="one"><xliff:g id="successful_number">%1$d</xliff:g> successful, %2$s</item> - <item quantity="other"><xliff:g id="successful_number">%1$d</xliff:g> successful, %2$s</item> - </plurals> + <string name="noti_caption_unsuccessful"> {count, plural, + other {# unsuccessful.} + }</string> + <string name="noti_caption_success"> {count, plural, + other {# successful, %1$s} + }</string> <string name="transfer_menu_clear_all">Clear list</string> <string name="transfer_menu_open">Open</string> diff --git a/android/app/src/com/android/bluetooth/opp/BluetoothOppNotification.java b/android/app/src/com/android/bluetooth/opp/BluetoothOppNotification.java index c5423941ed..4a64866d77 100644 --- a/android/app/src/com/android/bluetooth/opp/BluetoothOppNotification.java +++ b/android/app/src/com/android/bluetooth/opp/BluetoothOppNotification.java @@ -438,12 +438,8 @@ class BluetoothOppNotification { outboundNum = outboundSuccNumber + outboundFailNumber; // create the outbound notification if (outboundNum > 0) { - String unsuccessCaption = mContext.getResources() - .getQuantityString(R.plurals.noti_caption_unsuccessful, outboundFailNumber, - outboundFailNumber); - String caption = mContext.getResources() - .getQuantityString(R.plurals.noti_caption_success, outboundSuccNumber, - outboundSuccNumber, unsuccessCaption); + String caption = BluetoothOppUtility.formatResultText(outboundSuccNumber, + outboundFailNumber, mContext); Intent contentIntent = new Intent(Constants.ACTION_OPEN_OUTBOUND_TRANSFER).setClassName( Constants.THIS_PACKAGE_NAME, BluetoothOppReceiver.class.getName()); Intent deleteIntent = new Intent(Constants.ACTION_COMPLETE_HIDE).setClassName( @@ -508,12 +504,8 @@ class BluetoothOppNotification { inboundNum = inboundSuccNumber + inboundFailNumber; // create the inbound notification if (inboundNum > 0) { - String unsuccessCaption = mContext.getResources() - .getQuantityString(R.plurals.noti_caption_unsuccessful, inboundFailNumber, - inboundFailNumber); - String caption = mContext.getResources() - .getQuantityString(R.plurals.noti_caption_success, inboundSuccNumber, - inboundSuccNumber, unsuccessCaption); + String caption = BluetoothOppUtility.formatResultText(inboundSuccNumber, + inboundFailNumber, mContext); Intent contentIntent = new Intent(Constants.ACTION_OPEN_INBOUND_TRANSFER).setClassName( Constants.THIS_PACKAGE_NAME, BluetoothOppReceiver.class.getName()); Intent deleteIntent = new Intent(Constants.ACTION_COMPLETE_HIDE).setClassName( diff --git a/android/app/src/com/android/bluetooth/opp/BluetoothOppUtility.java b/android/app/src/com/android/bluetooth/opp/BluetoothOppUtility.java index a0a7878442..90f151413f 100644 --- a/android/app/src/com/android/bluetooth/opp/BluetoothOppUtility.java +++ b/android/app/src/com/android/bluetooth/opp/BluetoothOppUtility.java @@ -43,6 +43,7 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.database.Cursor; +import android.icu.text.MessageFormat; import android.net.Uri; import android.os.Environment; import android.os.ParcelFileDescriptor; @@ -57,7 +58,10 @@ import java.math.RoundingMode; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Locale; +import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** @@ -315,6 +319,26 @@ public class BluetoothOppUtility { } /** + * Helper function to build the result notification text content. + */ + static String formatResultText(int countSuccess, int countUnsuccessful, Context context) { + if (context == null) { + return null; + } + Map<String, Object> mapUnsuccessful = new HashMap<>(); + mapUnsuccessful.put("count", countUnsuccessful); + + Map<String, Object> mapSuccess = new HashMap<>(); + mapSuccess.put("count", countSuccess); + + return new MessageFormat(context.getResources().getString(R.string.noti_caption_success, + new MessageFormat(context.getResources().getString( + R.string.noti_caption_unsuccessful), + Locale.getDefault()).format(mapUnsuccessful)), + Locale.getDefault()).format(mapSuccess); + } + + /** * Whether the device has the "nosdcard" characteristic or not. */ public static boolean deviceHasNoSdCard() { |