1

我有一个简单的应用程序,除其他外,我需要这个应用程序能够更改 Android 设备的壁纸。

现在,我在网上环顾四周,pyjnius似乎是显而易见的选择。现在的问题是我不知道关于 java 的第一件事,但是快速的谷歌搜索产生了WallpaperManager作为我可以使用的东西。

问题是:如何使用 pyjnius 在我的 kivy 应用程序上实现墙纸管理器功能。同样,不是 java 开发者,所以不要开枪

4

1 回答 1

1

我也不懂 Java,但是在检查了一些 Java 示例之后,我生成了一个解决方案。不要忘记将SET_WALLPAPER权限添加到您的 buildozer.spec 文件中。您还需要获得存储权限才能使此示例正常工作。

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(e)
于 2019-12-02T15:40:25.010 回答