用ADB更改android壁纸?

时间:2015-08-12 00:52:16

标签: android adb

我想知道是否可以使用我的笔记本电脑从亚行更改Android壁纸。我不知道是否存在任何命令,或者我是否需要将图片复制到folfer或编辑文本文件。如果可能的话,我需要用ADB解决这个问题。

全部谢谢

8 个答案:

答案 0 :(得分:2)

壁纸是通过您的家庭应用程序设置的。这可能是任何应用程序,因此不存在一般的adb命令。

我知道像Trebuchet这样的应用程序(Cyanogenmod中默认使用的旧启动程序)会加载来自XML / JSON文件的信息,因此您可以推送图像/配置文件并触发重启,但它可以帮助您特定于您正在使用的家庭应用程序。因此,您必须弄清楚您正在使用哪个应用以及是否存在可以修改的外部配置文件。

修改

我会编写一个小型Android应用程序,该应用程序使用BroadcastReceiver或深层链接来监听专门的Intent活动。意图将包括具有文件位置的数据以用作壁纸。然后在应用程序中编写以编程方式设置壁纸的代码。有关该部分的帮助,请参阅http://agner.org/optimize/。然后,您可以通过adb(请参阅Programmatically set android phone's background)发送您的代码将要监听的内容,并触发更新壁纸。我不打算详细介绍如何实现这一点,但希望能为您提供足够的搜索条件,以了解如何自行实施。

答案 1 :(得分:2)

壁纸存储在 $(function () { $("#btnSave").click(function () { html2canvas($("#widget"), { onrendered: function (canvas) { canvas.toBlob(function (blob) { saveAs(blob, "Dashboard.png"); }); } }); }); }); 文件中:

/data/system/users/USER_ID/wallpaper_info.xml

在CWM中安装/数据,然后使用~ # cat /data/system/users/0/wallpaper_info.xml <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <wp width="1080" height="960" name="" component="net.rocboronat.android.wallpaper.npe/.NPEWallpaper" /> 。要使用adb shell编辑文件,请粘贴内容,然后点击^ D.新内容刚刚登陆该文件。

答案 2 :(得分:1)

您只需启动正确的壁纸设置意图,由已注册接收它的(可能已安装的)应用程序之一处理:

adb shell am start \
    -a android.intent.action.ATTACH_DATA \
    -c android.intent.category.DEFAULT \
    -d file:///path/to/my/image/on/device.jpg \
    -t 'image/*' \
    -e mimeType 'image/*'

如果您需要先将其上传到您的设备(bash语法):

file=/tmp/test.jpg
dest=/sdcard/Download/"${file##*/}"
adb push "$file" "$dest"
adb shell am start \
    -a android.intent.action.ATTACH_DATA \
    -c android.intent.category.DEFAULT \
    -d file://"$dest" \
    -t 'image/*' \
    -e mimeType 'image/*'

答案 3 :(得分:1)

这对我适用于Android 5.1

am start -d file:////data/local/tmp/black_white.png -a android.service.wallpaper.CROP_AND_SET_WALLPAPER -f 0x1 com.android.launcher3/.WallpaperCropActivity`

答案 4 :(得分:0)

位图文件位于/data/system/users/0/wallpaper

答案 5 :(得分:0)

如果您使用的是Amazon fire tablet HD 8(第8代)

Fire OS 6.3.0.0

仅更改解锁墙纸的批处理代码为:

set file=wallpaper.jpg
set dest=/sdcard/Download/%file%
adb push %file% %dest%

adb shell am start -d file://%dest% -a android.service.wallpaper.CROP_AND_SET_WALLPAPER -f 0x1 com.amazon.photos/com.android.launcher3.WallpaperCropActivity

Source

我找到要使用的命令的方式是使用最近的命令。执行操作,然后转储信息:

adb shell dumpsys activity recents   # for Android 4.4 and above
adb shell dumpsys activity activities # for Android 4.2.1

Source

或者您可以记录尝试记录动作的记录,但是我认为这仅适用于输入:

adb shell getevent

Source

答案 6 :(得分:0)

我编写了一个应用程序来做到这一点,这样亚行无需触摸设备即可完成它:

adb install the-app.apk
adb shell am broadcast -a com.blundell.app.SET_WALLPAPER -n com.blundell.app/.SetWallpaper
adb uninstall com.blundell.app

应用程序:

清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.blundell.app"
    >

    <uses-permission android:name="android.permission.SET_WALLPAPER"/>

    <application
        android:allowBackup="false"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        tools:ignore="GoogleAppIndexingWarning"
        >
        <receiver
            android:name=".SetWallpaper"
            tools:ignore="ExportedReceiver"
            >
            <intent-filter>
                <action android:name="com.blundell.app.SET_WALLPAPER"/>
            </intent-filter>

        </receiver>
    </application>

</manifest>

没有活动。

广播接收器:

class SetWallpaper : BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {
        WallpaperManager.getInstance(context).setResource(R.raw.wallpaper)
    }
}

就是这样!

墙纸本身位于/ res / raw /目录中。 如果需要,您还可以通过广播意图传递墙纸位置。

答案 7 :(得分:-1)

您无法使用ADB命令来更改壁纸。但是你可以;构建自定义壁纸组件并构建一个结构,通过调度广播将命令分配给该组件。或构建一个应用程序来观看您将文件推送到的目录。