Я знаю, что это старый вопрос, но ответ CMS, похоже, имеет один маленький недостаток: он работает только в том случае, если в формате валюты используется «.». как десятичный разделитель. Например, если вам нужно работать с русскими рублями, строка будет выглядеть так: «1 000,00 руб.»
Мое решение гораздо менее изящно, чем CMS, но оно должно сделать трюк.
var currency = "1 000,00 rub."; //it works for US-style currency strings as well
var cur_re = /\D*(\d.*?\d)(?:\D+(\d{2}))?\D*$/;
var parts = cur_re.exec(currency);
var number = parseFloat(parts[1].replace(/\D/,'')+'.'+(parts[2]?parts[2]:'00'));
Предположения:
Регулярное выражение может обрабатывать что-то вроде «1,999 долларов и 99 центов», хотя это не " t), и на него не следует полагаться.
Надеюсь, это поможет кому-то.
Я не уверен, к какой версии добавлена библиотека поддержки , но похоже, что эта функциональность теперь встроена. Просто используйте:
NotificationManagerCompat.getEnabledListenerPackages(context);
( ссылка на документы )
Возвращает Set<String>
, через который вы можете выполнить итерацию, чтобы найти имя вашего пакета. Обратите внимание, что я лично не проверял это. Но похоже, что это предпочтительнее использовать вместо моего старого решения ниже.
Этот код работает для моего приложения:
ContentResolver contentResolver = context.getContentResolver();
String enabledNotificationListeners = Settings.Secure.getString(contentResolver, "enabled_notification_listeners");
String packageName = context.getPackageName();
// check to see if the enabledNotificationListeners String contains our package name
if (enabledNotificationListeners == null || !enabledNotificationListeners.contains(packageName))
{
// in this situation we know that the user has not granted the app the Notification access permission
throw new Exception();
}
else
{
doSomethingThatRequiresNotificationAccessPermission();
}
Типичные значения, которые я видел для enabledNotificationsListeners
String
, выглядят так:
null
или ""
"com.woodblockwithoutco.remotecontrollerexample/com.woodblockwithoutco.remotecontrollerexample.RemoteControlService"
"com.scootrnova.android/com.scootrnova.android.ListenerService:com.woodblockwithoutco.remotecontrollerexample/com.woodblockwithoutco.remotecontrollerexample.RemoteControlService"
Эта реализация очень проста и прекрасно работает:)
PS Я получил идею использовать жестко закодированную строку "enabled_notification_listeners" из этого ответа .