From 5c8b109605b9b30c24c1f28525a42b44d9416350 Mon Sep 17 00:00:00 2001 From: Alan Justino Date: Fri, 27 Dec 2013 23:28:53 -0200 Subject: [PATCH 1/4] Custom actions and categories for BroadcastReceiver android.broadcast.BroadcastReceiver now accepts non-standard actions & categories. Detects by checking the presence of '.' on the name of it --- recipes/android/src/android/broadcast.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/recipes/android/src/android/broadcast.py b/recipes/android/src/android/broadcast.py index 4f6aebcabc..61354bf2dd 100644 --- a/recipes/android/src/android/broadcast.py +++ b/recipes/android/src/android/broadcast.py @@ -29,18 +29,26 @@ def __init__(self, callback, actions=None, categories=None): resolved_actions = [] if actions: for x in actions: - name = 'ACTION_{}'.format(x.upper()) - if not hasattr(Intent, name): - raise Exception('The intent {} doesnt exist'.format(name)) - resolved_actions += [getattr(Intent, name)] + if '.' in x: + full_name = x + else: + name = 'ACTION_{}'.format(x.upper()) + if not hasattr(Intent, name): + raise Exception('The intent {} doesnt exist'.format(name)) + full_name = getattr(Intent, name) + resolved_actions += [full_name] resolved_categories = [] if categories: for x in categories: - name = 'CATEGORY_{}'.format(x.upper()) - if not hasattr(Intent, name): - raise Exception('The intent {} doesnt exist'.format(name)) - resolved_categories += [getattr(Intent, name)] + if '.' in x: + full_name = x + else: + name = 'CATEGORY_{}'.format(x.upper()) + if not hasattr(Intent, name): + raise Exception('The intent {} doesnt exist'.format(name)) + full_name = getattr(Intent, name) + resolved_categories += [full_name] # resolve android API PythonActivity = autoclass('org.renpy.android.PythonActivity') From c9af9fa78eea97a0760b0c6d452f2df820e260c6 Mon Sep 17 00:00:00 2001 From: Alan Justino Date: Fri, 27 Dec 2013 23:38:58 -0200 Subject: [PATCH 2/4] Factored out the Intent name expansion --- recipes/android/src/android/broadcast.py | 27 ++++++++++-------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/recipes/android/src/android/broadcast.py b/recipes/android/src/android/broadcast.py index 61354bf2dd..88223e02ea 100644 --- a/recipes/android/src/android/broadcast.py +++ b/recipes/android/src/android/broadcast.py @@ -24,31 +24,26 @@ def __init__(self, callback, actions=None, categories=None): if not actions and not categories: raise Exception('You need to define at least actions or categories') + def _expand_partial_name(partial_name): + if '.' in partial_name: + return partial_name # Its actually a full dotted name + else: + name = 'ACTION_{}'.format(partial_name.upper()) + if not hasattr(Intent, name): + raise Exception('The intent {} doesnt exist'.format(name)) + return getattr(Intent, name) + # resolve actions/categories first Intent = autoclass('android.content.Intent') resolved_actions = [] if actions: for x in actions: - if '.' in x: - full_name = x - else: - name = 'ACTION_{}'.format(x.upper()) - if not hasattr(Intent, name): - raise Exception('The intent {} doesnt exist'.format(name)) - full_name = getattr(Intent, name) - resolved_actions += [full_name] + resolved_actions += [_expand_partial_name(x)] resolved_categories = [] if categories: for x in categories: - if '.' in x: - full_name = x - else: - name = 'CATEGORY_{}'.format(x.upper()) - if not hasattr(Intent, name): - raise Exception('The intent {} doesnt exist'.format(name)) - full_name = getattr(Intent, name) - resolved_categories += [full_name] + resolved_categories += [_expand_partial_name(x)] # resolve android API PythonActivity = autoclass('org.renpy.android.PythonActivity') From 32ada4265d62ec5ea14646d4d2f22450b105ba2a Mon Sep 17 00:00:00 2001 From: Alan Justino Date: Fri, 27 Dec 2013 23:42:00 -0200 Subject: [PATCH 3/4] Simplified via list comprehensions --- recipes/android/src/android/broadcast.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/recipes/android/src/android/broadcast.py b/recipes/android/src/android/broadcast.py index 88223e02ea..aaaae453dc 100644 --- a/recipes/android/src/android/broadcast.py +++ b/recipes/android/src/android/broadcast.py @@ -35,15 +35,8 @@ def _expand_partial_name(partial_name): # resolve actions/categories first Intent = autoclass('android.content.Intent') - resolved_actions = [] - if actions: - for x in actions: - resolved_actions += [_expand_partial_name(x)] - - resolved_categories = [] - if categories: - for x in categories: - resolved_categories += [_expand_partial_name(x)] + resolved_actions = [_expand_partial_name(x) for x in actions] + resolved_categories = [_expand_partial_name(x) for x in categories] # resolve android API PythonActivity = autoclass('org.renpy.android.PythonActivity') From 1385f382e71968580079385e76016592adde1fe3 Mon Sep 17 00:00:00 2001 From: Alan Justino Date: Fri, 10 Jan 2014 11:28:48 -0200 Subject: [PATCH 4/4] Oops: was broken if categories[] empty --- recipes/android/src/android/broadcast.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/android/src/android/broadcast.py b/recipes/android/src/android/broadcast.py index aaaae453dc..452efbc0e3 100644 --- a/recipes/android/src/android/broadcast.py +++ b/recipes/android/src/android/broadcast.py @@ -35,8 +35,8 @@ def _expand_partial_name(partial_name): # resolve actions/categories first Intent = autoclass('android.content.Intent') - resolved_actions = [_expand_partial_name(x) for x in actions] - resolved_categories = [_expand_partial_name(x) for x in categories] + resolved_actions = [_expand_partial_name(x) for x in actions or []] + resolved_categories = [_expand_partial_name(x) for x in categories or []] # resolve android API PythonActivity = autoclass('org.renpy.android.PythonActivity')