Существует также один уродливый, но рабочий путь. Декомпилируйте FirebaseMessagingService.class и измените его поведение. Затем просто поместите класс в нужный пакет в приложении yout, а dex используйте его вместо класса в самой папке сообщений. Это довольно просто и работает.
Существует метод:
private void zzo(Intent intent) {
Bundle bundle = intent.getExtras();
bundle.remove("android.support.content.wakelockid");
if (zza.zzac(bundle)) { // true if msg is notification sent from FirebaseConsole
if (!zza.zzdc((Context)this)) { // true if app is on foreground
zza.zzer((Context)this).zzas(bundle); // create notification
return;
}
// parse notification data to allow use it in onMessageReceived whe app is on foreground
if (FirebaseMessagingService.zzav(bundle)) {
zzb.zzo((Context)this, intent);
}
}
this.onMessageReceived(new RemoteMessage(bundle));
}
Этот код из версии 9.4.0, метод будет иметь разные имена в другой версии из-за обфускации.
У Вас, вероятно, есть файл, названный random.py или random.pyc в Вашем рабочем каталоге. Это - затенение встроенный случайный модуль. Необходимо переименовать random.py к чему-то как my_random.py и/или удалить random.pyc файл.
Для сообщения наверняка, что продолжается сделайте это:
>>> import random
>>> print random.__file__
Это покажет Вам точно, какой файл импортируется.
Это происходит, потому что у Вас есть random.py файл в пути поиска Python, скорее всего, текущий каталог.
Python ищет модули с помощью sys.path, который обычно включает текущий каталог перед стандартными пакетами сайта, который содержит ожидаемый random.py.
Это, как ожидают, будет зафиксировано в Python 3.0, так, чтобы Вы не могли импортировать модули из текущего каталога, не используя специальный синтаксис импорта.
Просто удалите random.py + random.pyc в каталоге, от которого Вы запускаете Python, и он будет хорошо работать.
Я думаю, что необходимо дать еще некоторую информацию. Не действительно возможно ответить, почему это не работает на основе информации в вопросе. Основная документация для случайного в: https://docs.python.org/library/random.html
Вы могли бы проверить там.
Если бы скрипт, который Вы пытаетесь запустить, самостоятельно называют random.py, то у Вас был бы конфликт имен. Выберите другое имя для своего сценария.
Можно ли отправить пример того, что Вы пытаетесь сделать? Не ясно из Вашего вопроса, какова фактическая проблема.
Вот пример того, как использовать случайный модуль:
import random
print random.randint(0,10)
Python 2.5.2 (r252:60911, Jun 16 2008, 18:27:58)
[GCC 3.3.4 (pre 3.3.5 20040809)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import random
>>> random.seed()
>>> dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', 'WichmannHill', '_BuiltinMethodType', '_MethodType', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '_acos', '_ceil', '_cos', '_e', '_exp', '_hexlify', '_inst', '_log', '_pi', '_random', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'jumpahead', 'lognormvariate', 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'uniform', 'vonmisesvariate', 'weibullvariate']
>>> random.randint(0,3)
3
>>> random.randint(0,3)
1
>>>
Кажется, хорошо работает для меня. Проверьте методы в официальной документации Python для случайного:
>>> import random
>>> random.random()
0.69130806168332215
>>> random.uniform(1, 10)
8.8384170917436293
>>> random.randint(1, 10)
4
Работы для меня:
Python 2.5.1 (r251:54863, Jun 15 2008, 18:24:51)
[GCC 4.3.0 20080428 (Red Hat 4.3.0-8)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import random
>>> brothers = ['larry', 'curly', 'moe']
>>> random.choice(brothers)
'moe'
>>> random.choice(brothers)
'curly'