Skip to content

Commit c15ce3a

Browse files
committed
sync patch circular import fix2
1 parent 7de2102 commit c15ce3a

6 files changed

Lines changed: 39 additions & 45 deletions

File tree

android_notify/config.py

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@
22

33
__version__ = "1.61.3"
44

5-
from .internal.java_classes import autoclass, cast, NotificationManager
65
from .internal.logger import logger
76

8-
97
def on_kivy_android():
108
kivy_build = os.environ.get('KIVY_BUILD', '')
119
if kivy_build in {'android'}:
@@ -26,6 +24,37 @@ def on_android_platform():
2624
return on_kivy_android() or on_flet_app()
2725

2826

27+
if on_android_platform():
28+
try:
29+
from jnius import cast, autoclass
30+
except ModuleNotFoundError:
31+
cast = lambda x, y: x
32+
autoclass = lambda x: None
33+
else:
34+
cast = lambda x, y: x
35+
autoclass = lambda x: None
36+
37+
38+
def on_pydroid_app():
39+
package_name = "ru.iiec.pydroid3"
40+
if package_name in os.environ.get("PYTHONHOME",""):
41+
return True
42+
elif package_name in os.path.dirname(os.path.abspath(__file__)):
43+
return True
44+
elif on_android_platform():
45+
return package_name == get_package_name()
46+
return False
47+
48+
49+
def has_androidx_dependency():
50+
"""Check if androidx dependencies are available"""
51+
try:
52+
_=autoclass('androidx.core.app.NotificationCompat')
53+
return True
54+
except Exception:
55+
return False
56+
57+
2958
def get_activity_class_name():
3059
ACTIVITY_CLASS_NAME = os.getenv("MAIN_ACTIVITY_HOST_CLASS_NAME") # flet python
3160
if not ACTIVITY_CLASS_NAME:
@@ -98,6 +127,7 @@ def get_notification_manager():
98127
if not on_android_platform():
99128
logger.warning("Can't get notification manager, Not on Android.")
100129
return None
130+
NotificationManager = autoclass('android.app.NotificationManager')
101131

102132
context = get_python_activity_context()
103133
notification_service = context.getSystemService(context.NOTIFICATION_SERVICE)

android_notify/core.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@
33
import os
44

55
from android_notify.internal.logger import logger
6-
from android_notify.internal.helper import on_pydroid_app
76

8-
from android_notify.config import get_python_activity, on_android_platform, get_python_activity_context, on_flet_app
7+
from android_notify.config import get_python_activity, on_android_platform, get_python_activity_context, on_flet_app, on_pydroid_app
98
from android_notify.internal.permissions import has_notification_permission, ask_notification_permission
109
from android_notify.internal.java_classes import autoclass, BuildVersion, BitmapFactory, NotificationChannel, NotificationManagerCompat, NotificationCompat, NotificationCompatBuilder, \
1110
NotificationCompatBigTextStyle, NotificationCompatBigPictureStyle, NotificationCompatInboxStyle, IconClass

android_notify/internal/helper.py

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""Collection of useful functions"""
22

33
import inspect, os, re
4-
from .logger import logger, on_android_platform
4+
from .logger import logger
55

66
def can_accept_arguments(func, *args, **kwargs):
77
try:
@@ -54,24 +54,3 @@ def execute_callback(callback,arg, from_who="user"):
5454
callback()
5555
except Exception as on_permissions_result_callback_error:
5656
logger.exception(on_permissions_result_callback_error)
57-
58-
def on_pydroid_app():
59-
package_name = "ru.iiec.pydroid3"
60-
if package_name in os.environ.get("PYTHONHOME",""):
61-
return True
62-
elif package_name in os.path.dirname(os.path.abspath(__file__)):
63-
return True
64-
elif on_android_platform():
65-
from android_notify.config import get_package_name
66-
return package_name == get_package_name()
67-
return False
68-
69-
70-
def has_androidx_dependency():
71-
"""Check if androidx dependencies are available"""
72-
try:
73-
from jnius import autoclass
74-
autoclass('androidx.core.app.NotificationCompat')
75-
return True
76-
except Exception:
77-
return False

android_notify/internal/java_classes.py

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,7 @@
1-
import os
21

3-
from .helper import has_androidx_dependency, on_pydroid_app
2+
from android_notify.config import has_androidx_dependency,on_pydroid_app, on_android_platform,on_flet_app
43
from .logger import logger
54

6-
def on_android_platform():
7-
kivy_build = os.environ.get('KIVY_BUILD', '')
8-
if kivy_build in {'android'}:
9-
return True
10-
elif 'P4A_BOOTSTRAP' in os.environ:
11-
return True
12-
elif 'ANDROID_ARGUMENT' in os.environ:
13-
return True
14-
return os.getenv("MAIN_ACTIVITY_HOST_CLASS_NAME")
15-
16-
def on_flet_app():
17-
return os.getenv("MAIN_ACTIVITY_HOST_CLASS_NAME")
18-
195
if on_android_platform():
206
try:
217
from jnius import cast, autoclass

android_notify/internal/permissions.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
import os.path
55

66
from .logger import logger
7-
from android_notify.config import on_android_platform, on_flet_app, get_python_activity_context
7+
from android_notify.config import on_android_platform, on_flet_app, get_python_activity_context, on_pydroid_app, has_androidx_dependency
88
from android_notify.internal.java_classes import autoclass, BuildVersion, Manifest, Intent, String, Settings, Uri, PackageManager, NotificationManagerCompat
9-
from android_notify.internal.helper import execute_callback, on_pydroid_app, has_androidx_dependency
9+
from android_notify.internal.helper import execute_callback
1010

1111

1212
def check_notification_permission_legacy_android12_below():

android_notify/widgets/images.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
"""
44
import os
55

6-
from android_notify.config import app_storage_path, on_flet_app, on_android_platform, get_python_activity_context
6+
from android_notify.config import app_storage_path, on_flet_app, on_android_platform, get_python_activity_context, on_pydroid_app
77
from android_notify.internal.java_classes import autoclass, BitmapFactory, Uri, BuildVersion, Color, IconClass
8-
from android_notify.internal.helper import get_package_path, on_pydroid_app
8+
from android_notify.internal.helper import get_package_path
99
from android_notify.internal.logger import logger
1010

1111

0 commit comments

Comments
 (0)