У меня была похожая проблема, и оказалось, что вызов просто registerReceiver(broadcastReceiver, IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)
, без получения экземпляра LocalBroadcastManager
, решил проблему.
Возможно, проблема заключалась в том, что получатель регистрировался в неверном объекте контекста. [не забудьте также позаботиться о отмене регистрации получателя]
Я сделал это так
public void onResume()
{
super.onResume();
registerReceiver(broadcastReceiver, IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE))
}
public void onPause()
{
super.onPause();
unregisterReceiver(broadcastReceiver);
}
Вот основная идея в Perl. Соль для дегустации.
#!/usr/bin/perl use LWP::UserAgent; my $ua = LWP::UserAgent->new; @ARGV = qw(http://www.example.com/logo.png); my $response = $ua->head( $ARGV[0] ); my( $class, $type ) = split m|/|, lc $response->content_type; print "It's an image!\n" if $class eq 'image';
, Если необходимо осмотреть URL, пользуйтесь солидной библиотекой для него вместо того, чтобы пытаться обработать все нечетные ситуации сами:
use URI; my $uri = URI->new( $ARGV[0] ); my $last = ( $uri->path_segments )[-1]; my( $extension ) = $last =~ m/\.([^.]+)$/g; print "My extension is $extension\n";
Удача, :)
В целом Вы - более обеспеченные URL проверки, пользующиеся встроенной библиотекой или функциями платформы, вместо того, чтобы прокрутить Ваши собственные регулярные выражения, чтобы сделать это - видит , Что является лучшим регулярным выражением, чтобы проверить, является ли строка допустимым URL для деталей.
, Если Вы увлечены выполнением этого, тем не менее, проверяют этот вопрос:
Затем после того как Вы удовлетворены URL (любыми средствами Вы раньше проверяли его), Вы могли или использовать простой строковый оператор типа "endswith" для проверки расширения или простого regex как
(?i)\.(jpg|png|gif)$
На самом деле.
, Почему Вы проверяете URL? Это не гарантия, что Вы собираетесь получить, изображение, и никакая гарантия, что вещи Вы отклоняете , не изображения. Попытайтесь выполнить ГЛАВНЫЙ запрос на нем и посмотрите, каково тип контента это на самом деле .
(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*\.(?:jpg|gif|png))(?:\?([^#]*))?(?:#(.*))?
Это (немного изменено) версия официального URI, анализирующего regexp от RFC 2396 . Это позволяет #fragments
и ?querystrings
появляться после имени файла, которое может или не может быть тем, что Вы хотите. Это также соответствует любому допустимому домену, включая localhost
, который снова не мог бы быть тем, что Вы хотите, но это могло быть изменено.
А более традиционный regexp для этого мог бы быть похожим ниже.
^https?://(?:[a-z0-9\-]+\.)+[a-z]{2,6}(?:/[^/#?]+)+\.(?:jpg|gif|png)$ |-------- domain -----------|--- path ---|-- extension ---|
РЕДАКТИРОВАНИЕ Видит мой другой комментарий , который, хотя не отвечает на вопрос так же полностью как этот, я чувствую, что это - вероятно, более полезное в этом случае. Однако я оставляю это здесь для распутства кармы причинами полноты.
Если Вы действительно хотите быть уверенными, захватывая первый килобайт, или два из данного URL должны быть достаточными для определения всего, что необходимо знать об изображении.
Вот пример того, как Вы можете получить ту информацию , с помощью Python, и здесь пример его вводимый в эксплуатацию как поле формы Django, которое позволяет Вам легко проверять существование изображения, размер файла, размеры и формат, учитывая его URL.
^((http(s?)\:\/\/|~/|/)?([\w]+:\w+@)?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?((/?\w+/)+|/?)(\w+\.(jpg|png|gif))
(http(s?):)|([/|.|\w|\s])*\.(?:jpg|gif|png)
Это обработает все изображения из этой строки:
background: rgb(255, 0, 0) url(../res/img/temp/634043/original/cc3d8715eed0c.jpg) repeat fixed left top; cursor: auto;
<div id="divbg" style="background-color:#ff0000"><img id="bg" src="../res/img/temp/634043/original/cc3d8715eed0c.jpg" width="100%" height="100%" /></div>
background-image: url(../res/img/temp/634043/original/cc3d8715eed0c.png);
background: rgb(255, 0, 0) url(http://google.com/res/../img/temp/634043/original/cc3 _d8715eed0c.jpg) repeat fixed left top; cursor: auto;
background: rgb(255, 0, 0) url(https://google.com/res/../img/temp/634043/original/cc3_d8715eed0c.jpg) repeat fixed left top; cursor: auto;
Проверьте свое регулярное выражение здесь: https://regex101.com/r/l2Zt7S/1