【问题标题】:Creating own LiveWallpaperPreview?创建自己的 LiveWallpaperPreview?
【发布时间】:2011-08-18 16:24:45
【问题描述】:

我想创建自己的 LiveWallpaperPreview,即向用户显示所选动态壁纸的全屏预览(没有股票操作系统预览所具有的“设置壁纸”和“设置”按钮)。

从 2.1 (android.git.kernel.org) 重建 LivePicker-Class 效果很好,因此我可以让用户选择要预览的壁纸,但实际的 LiveWallpaperPreview-Class 会尝试导入以下私有接口/类:

import android.service.wallpaper.IWallpaperConnection;
import android.service.wallpaper.IWallpaperService;
import android.service.wallpaper.IWallpaperEngine;
import android.service.wallpaper.WallpaperSettingsActivity;

有什么方法可以在我的应用中显示 LiveWallpaper 而无需使用私有 API(我显然不想这样做)?

谢谢!

尼克

【问题讨论】:

    标签: android


    【解决方案1】:

    你不能这样做。动态壁纸选择器是 Android 操作系统的一部分,无法替换。

    【讨论】:

    • 您好罗曼,感谢您的回答。我不想替换选择器,只是它用于我自己的应用程序:我只想向我的应用程序用户显示动态壁纸。这也不可能吗?谢谢,尼克
    • 我刚刚发现您可以使用 Theme.Wallpaper 作为活动的主题来显示当前正在使用的 LW - 比我想象的要简单得多 :-)!但是,是否可以使用这种方法显示用户已安装的其他壁纸(与当前选择的不同)?
    • 抱歉,没有办法做到这一点。
    【解决方案2】:

    调查同样的问题,但也走到了死胡同。

    我的想法是我不需要访问 IWallpaperConnection 等,但我可以在绑定服务上使用反射。

    但是,我明白了 WARN/ActivityManager(96): Permission Denial: Accessing service ComponentInfo{com.android.wallpaper/com.android.wallpaper.grass.GrassWallpaper} from pid=4196, uid=10070 requires android.permission.BIND_WALLPAPER

    查看壁纸需要android.permission.BIND_WALLPAPER权限,是普通应用不具备的系统权限。

    编辑: 创建了一个名为 Current Wallpaper 的应用程序,该应用程序在市场上可用 https://market.android.com/details?id=com.elsewhat.android.currentwallpaper

    它基本上在独立应用程序中显示当前壁纸,并允许您通过标准壁纸选择器的意图更改壁纸。

    应用使用主题 android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen"

    【讨论】:

      猜你喜欢
      • 2013-08-04
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      • 2011-04-29
      • 1970-01-01
      相关资源
      最近更新 更多