Android Device ID IMEI - Error : jnius.jnius.JavaException: No methods matching your arguments, available

192 views
Skip to first unread message

tamano tam

unread,
Jun 1, 2019, 11:56:22 AM6/1/19
to Kivy users support
Hello,
I want to get the IMEI by using Pyjnius. Need help ! Thank you

The code is :

from jnius import autoclass
context = autoclass('android.content.Context')
service = context.getSystemService(context.TELEPHONY_SERVICE)
print('Device ID2 - IMEI : {}'.format(service.getImei()))

The log is :

06-01 17:37:41.754  9853  9873 I python  : Run user program, change dir and execute entrypoint
06-01 17:37:42.040  9853  9873 I python  : [INFO   ] [Logger      ] Record log in /data/user/0/com.background.back/files/app/.kivy/logs/kivy_19-06-01_2.txt
06-01 17:37:42.040  9853  9873 I python  : [INFO   ] [Kivy        ] v1.11.0rc1, git-Unknown, 20190526
06-01 17:37:42.040  9853  9873 I python  : [INFO   ] [Kivy        ] Installed at "/data/user/0/com.background.back/files/app/_python_bundle/site-packages/kivy/__init__.pyc"
06-01 17:37:42.040  9853  9873 I python  : [INFO   ] [Python      ] v3.7.1 (default, May 26 2019, 15:53:53)
06-01 17:37:42.040  9853  9873 I python  : [Clang 6.0.2 (https://android.googlesource.com/toolchain/clang 183abd29fc496f55
06-01 17:37:42.041  9853  9873 I python  : [INFO   ] [Python      ] Interpreter at "android_python"
06-01 17:37:42.751  9853  9873 I python  : [INFO   ] [Factory     ] 184 symbols loaded
06-01 17:37:43.253  9853  9873 I python  : [INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
06-01 17:37:43.382  9853  9873 I python  : 0.0.7
06-01 17:37:43.538  9853  9873 I python  :  Traceback (most recent call last):
06-01 17:37:43.538  9853  9873 I python  :    File "/home/kivy/Dev/background/.buildozer/android/app/main.py", line 80, in <module>
06-01 17:37:43.539  9853  9873 I python  :    File "/home/kivy/Dev/background/.buildozer/android/platform/build/build/python-installs/back/kivy/app.py", line 829, in run
06-01 17:37:43.539  9853  9873 I python  :    File "/home/kivy/Dev/background/.buildozer/android/app/main.py", line 45, in build
06-01 17:37:43.540  9853  9873 I python  :    File "jnius/jnius_export_class.pxi", line 1034, in jnius.jnius.JavaMultipleMethod.__call__
06-01 17:37:43.540  9853  9873 I python  :  jnius.jnius.JavaException: No methods matching your arguments, available: []
06-01 17:37:43.540  9853  9873 I python  : Python for android ended.

The Buildozer spec file is :

`[app]
#android:debuggable="false"
(str) Title of your application
title = Back
(str) Package name
package.name = back
(str) Package domain (needed for android/ios packaging)
package.domain = com.background
(str) Source code where the main.py live
source.dir = .
(list) Source files to include (let empty to include all the files)
source.include_exts = py,png,jpg,kv,atlas
(list) List of inclusions using pattern matching
#source.include_patterns = assets/,images/.png
(list) Source files to exclude (let empty to not exclude anything)
#source.exclude_exts = spec
(list) List of directory to exclude (let empty to not exclude anything)
#source.exclude_dirs = tests, bin
(list) List of exclusions using pattern matching
#source.exclude_patterns = license,images//.jpg
(str) Application versioning (method 1)
version = 0.1
(str) Application versioning (method 2)
version.regex = version = '"['"]

version.filename = %(source.dir)s/main.py
(list) Application requirements
comma seperated e.g. requirements = sqlite3,kivy
requirements = python3,kivy==master,openssl,pillow,requests,plyer,android,pyjnius,sdl2
(str) Custom source folders for requirements
Sets custom source for any requirements with recipes
requirements.source.kivy = ../../kivy
(list) Garden requirements
#garden_requirements = mapview
(str) Presplash of the application
#presplash.filename = %(source.dir)s/data/icon.png
(str) Icon of the application
#icon.filename = %(source.dir)s/data/icon.png
(str) Supported orientation (one of landscape, portrait or all)
orientation = portrait
(list) List of service to declare
#services = NAME:ENTRYPOINT_TO_PY,NAME2:ENTRYPOINT2_TO_PY

#services = Service:service/main.py:sticky

services = Service:service/main.py

OSX Specific


author = © Author
change the major version of python used by the app
osx.python_version = 3
Kivy version to use
osx.kivy_version = 1.9.1

Android specific

(bool) Indicate if the application should be fullscreen or not
fullscreen = 0
(string) Presplash background color (for new android toolchain)
Supported formats are: #RRGGBB #AARRGGBB or one of the following names:
red, blue, green, black, white, gray, cyan, magenta, yellow, lightgray,
darkgray, grey, lightgrey, darkgrey, aqua, fuchsia, lime, maroon, navy,
olive, purple, silver, teal.
#android.presplash_color = #FFFFFF
(list) Permissions
android.permissions = INTERNET,ACCESS_FINE_LOCATION,ACCESS_COARSE_LOCATION,CALL_PHONE,CALL_PRIVILEGED,VIBRATE,CAMERA, FLASHLIGHT,READ_PHONE_STATE
(int) Android API to use
#android.api = 28
(int) Minimum API required
#android.minapi = 27
(int) Android SDK version to use
#android.sdk = 23
(str) Android NDK version to use
#android.ndk = r16b
(bool) Use --private data storage (True) or --dir public storage (False)
#android.private_storage = True
(str) Android NDK directory (if empty, it will be automatically downloaded.)
#android.ndk_path =/home/kivy/Android/android-ndk-r16b/
(str) Android SDK directory (if empty, it will be automatically downloaded.)
#android.sdk_path = /home/kivy/Android/android-sdk-28/
(str) ANT directory (if empty, it will be automatically downloaded.)
#android.ant_path =
(bool) If True, then skip trying to update the Android sdk
This can be useful to avoid excess Internet downloads or save time
when an update is due and you just want to test/build your package
android.skip_update = False
(str) Android entry point, default is ok for Kivy-based app
#android.entrypoint = org.renpy.android.PythonActivity
(list) Pattern to whitelist for the whole project
#android.whitelist =
(str) Path to a custom whitelist file
#android.whitelist_src =
(str) Path to a custom blacklist file
#android.blacklist_src =
(list) List of Java .jar files to add to the libs so that pyjnius can access
their classes. Don't add jars that you do not need, since extra jars can slow
down the build process. Allows wildcards matching, for example:
OUYA-ODK/libs/*.jar
#android.add_jars = foo.jar,bar.jar,path/to/more/*.jar
(list) List of Java files to add to the android project (can be java or a
directory containing the files)
#android.add_src =
(list) Android AAR archives to add (currently works only with sdl2_gradle
bootstrap)
#android.add_aars =
(list) Gradle dependencies to add (currently works only with sdl2_gradle
bootstrap)
#android.gradle_dependencies =
(str) python-for-android branch to use, defaults to stable
#p4a.branch = stable
(str) OUYA Console category. Should be one of GAME or APP
If you leave this blank, OUYA support will not be enabled
#android.ouya.category = GAME
(str) Filename of OUYA Console icon. It must be a 732x412 png image.
#android.ouya.icon.filename = %(source.dir)s/data/ouya_icon.png
(str) XML file to include as an intent filters in  tag
#android.manifest.intent_filters =
(list) Android additionnal libraries to copy into libs/armeabi
#android.add_libs_armeabi = libs/android/.so

#android.add_libs_armeabi_v7a = libs/android-v7/.so

#android.add_libs_x86 = libs/android-x86/.so

#android.add_libs_mips = libs/android-mips/.so
(bool) Indicate whether the screen should stay on
Don't forget to add the WAKE_LOCK permission if you set this to True
#android.wakelock = False
(list) Android application meta-data to set (key=value format)
#android.meta_data =
(list) Android library project to add (will be added in the
project.properties automatically.)
#android.library_references =
(str) Android logcat filters to use
#android.logcat_filters = *:S python:D
(bool) Copy library instead of making a libpymodules.so
#android.copy_libs = 1
(str) The Android arch to build for, choices: armeabi-v7a, arm64-v8a, x86
android.arch = armeabi-v7a

Python for android (p4a) specific

(str) python-for-android git clone directory (if empty, it will be automatically cloned from github)
#p4a.source_dir = /home/kivy/Repos/python-for-android/
(str) The directory in which python-for-android should look for your own build recipes (if any)
#p4a.local_recipes =
(str) Filename to the hook for p4a
#p4a.hook =
#p4a.force-build = True
(str) Bootstrap to use for android builds
p4a.bootstrap = sdl2

iOS specific

(str) Path to a custom kivy-ios folder
#ios.kivy_ios_dir = ../kivy-ios
(str) Name of the certificate to use for signing the debug version
Get a list of available identities: buildozer ios list_identities
#ios.codesign.debug = "iPhone Developer:   ()"
(str) Name of the certificate to use for signing the release version
#ios.codesign.release = %(ios.codesign.debug)s
[buildozer]
(int) Log level (0 = error only, 1 = info, 2 = debug (with command output))
log_level = 2
(int) Display warning if buildozer is run as root (0 = False, 1 = True)
warn_on_root = 1
(str) Path to build artifact storage, absolute or relative to spec file
#build_dir = /build/
(str) Path to build output (i.e. .apk, .ipa) storage
bin_dir = ./bin
-----------------------------------------------------------------------------
List as sections

You can define all the "list" as [section:key].
Each line will be considered as a option to the list.
Let's take [app] / source.exclude_patterns.
Instead of doing:

#[app]

#source.exclude_patterns = license,data/audio/.wav,data/images/original/

This can be translated into:

#[app:source.exclude_patterns]

#license

#data/audio/.wav

#data/images/original/

-----------------------------------------------------------------------------
Profiles

You can extend section / key with a profile
For example, you want to deploy a demo version of your application without
HD content. You could first change the title to add "(demo)" in the name
and extend the excluded directories to remove the HD content.

#[app@demo]

#title = My Application (demo)

#[app:source.exclude_patterns@demo]

#images/hd/*

Then, invoke the command line with the "demo" profile:

#buildozer --profile demo android debug

`
     

Robert Flatt

unread,
Jun 1, 2019, 8:30:01 PM6/1/19
to Kivy users support
This is really an Android Java API question, not a Kivy question.
Google finds the answer in all the usual places:

Applying this in Python/Kivy:
 activity = autoclass('org.kivy.android.PythonActivity')
 service
= activity.getSystemService(context.TELEPHONY_SERVICE)

tamano tam

unread,
Jun 2, 2019, 11:14:57 AM6/2/19
to Kivy users support
Is works fine !
Thank you Robert
Reply all
Reply to author
Forward
0 new messages