在Python / Kivy中更改设备墙纸

时间:2019-07-11 09:08:58

标签: python-3.x kivy pyjnius

我有一个简单的应用程序,除其他外,我需要该应用程序才能在Android上更改设备的墙纸。

现在,我已经在网上四处张望,pyjnius似乎是显而易见的选择。现在的问题是,我不了解有关Java的第一件事,但是快速的Google搜索会产生WallpaperManager,这是我可以使用的东西。

这里的问题是:如何使用pyjnius在我的kivy应用程序中实现墙纸管理器功能。 再说一次,不是Java开发人员,所以不要射击

1 个答案:

答案 0 :(得分:1)

我也不懂Java,但是在研究了一些Java示例之后,我产生了一个解决方案。不要忘记向您的buildozer.spec文件添加 SET_WALLPAPER 权限。您还需要获得存储许可才能执行此示例。

from jnius import autoclass, cast

PythonActivity = autoclass('org.kivy.android.PythonActivity')

try:
    Environment = autoclass("android.os.Environment")
    path = Environment.getExternalStorageDirectory().toString()

    currentActivity = cast('android.app.Activity', PythonActivity.mActivity)
    context = cast('android.content.Context', currentActivity.getApplicationContext())

    File = autoclass('java.io.File')
    file = File(path+"/test.jpg")

    BitmapFactory = autoclass('android.graphics.BitmapFactory')
    bitmap = BitmapFactory.decodeFile(file.getAbsolutePath())

    WallpaperManager = autoclass('android.app.WallpaperManager')
    manager = WallpaperManager.getInstance(context)
    manager.setBitmap(bitmap)

except Exception as e:
    print(str(e))