如何使用python junis.autoclass向Android中的后台服务授予权限

问题描述

我正在尝试使用buildozer制作用于Android的GPS记录器。 我可以通过“ from jnius import autoclass”提供基本的后台服务。 但是,由于权限的原因,其后台文件不起作用。 (前台服务还可以) 您能否帮助我了解授予android后台服务权限的正确方法

main.py(部分)

    from kivy.utils import platform
    SERVICE_NAME = u'{packagename}.Service{servicename}'.format(
    packagename=u'org.kivy.test',servicename=u'Myservice')

    if platform == 'android':
        from jnius import autoclass
        service = autoclass(SERVICE_NAME)
        mActivity = autoclass(u'org.kivy.android.PythonActivity').mActivity
        argument = ""
        service.start(mActivity,argument)

service.py(背景)

    if platform == 'android':
        print("Service platform android")
        from android.permissions import Permission,request_permissions
        request_permissions([Permission.ACCESS_COARSE_LOCATION,Permission.ACCESS_FINE_LOCATION])

buildozer.spec

    # (list) Application requirements
    # comma separated e.g. requirements = sqlite3,kivy
    requirements = python3,kivy==2.0.0rc1,requests,certifi,urllib3,chardet,idna,plyer,oscpy,autoclass
    
    # (list) List of service to declare
    #services = NAME:ENTRYPOINT_TO_PY,NAME2:ENTRYPOINT2_TO_PY
    services = Myservice:service.py
    
    # (list) Permissions
    #android.permissions = INTERNET
    android.permissions = INTERNET,ACCESS_COARSE_LOCATION,ACCESS_FINE_LOCATION

(others are default)

结果;

I/Myservice:  Traceback (most recent call last):
       File "/home/nori/maplog/.buildozer/android/app/service.py",line 34,in <module>
I/Myservice:    File "/home/nori/maplog/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/test/android/permissions.py",line 570,in request_permissions
       File "/home/nori/maplog/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/test/android/permissions.py",line 510,line 488,in register_callback
I/Myservice:    File "jnius/jnius_export_class.pxi",line 755,in jnius.jnius.JavaMethod.__call__
       File "jnius/jnius_export_class.pxi",line 699,in jnius.jnius.JavaMethod.ensure_method
     jnius.jnius.JavaException: Unable to find a None method!
     classname: None,deFinition: (Lorg/kivy/android/PythonActivity$PermissionsCallback;)V
I/python: Python for android ended.

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)