如何在没有WallpaperManager的情况下设置壁纸

时间:2018-04-24 15:09:37

标签: android android-intent android-wallpaper android-glide

我正在使用Glide在ImageView中缓存图像。 现在我想在不使用WallpaperManager的情况下将ImageView中的图像设置为手机的壁纸,因为WallpaperManager不提供裁剪/平移图像的选项,就像默认图库应用程序的壁纸设置一样。

我想使用以下方式设置壁纸:

  

Intent.ACTION_ATTACH_DATA

  

Intent.ACTION_SET_WALLPAPER

但我不知道如何将Bitmap / drawable从ImageView传递给该意图。 这是我的代码:

Option Explicit

Sub test()

Dim lr As Long

    With ThisWorkbook.Worksheets("Sheet1")  '<== change this to your workbook.worksheet e.g. maybe  wb_gr.sh_9_overtid_år

        lr = .Range("A" & .Rows.Count).End(xlUp).Row
        .Range("D3:D" & lr).Value = .Range("D3")

    End With

End Sub

当我执行此代码时,我会得到一个带有已安装画廊的上拉菜单来选择壁纸。 当我选择其中一个时,我会得到一个Toast-

  

&#34;无法加载图片。&#34;

这可能是因为我没有将任何图像传递给Intent。 请帮助,我已经搜索了好几个小时。

我发现了类似问题herehere&amp; here,但他们都没有为我工作。

1 个答案:

答案 0 :(得分:0)

所以,当我解决问题时,现在我在这里编写解决方案(以防其他人需要它)。

    myDir = new File(root + "/Wallpy/");     //this is the name of the containing folder
    final File imageFile = new File(myDir, "abcd.jpg");     //name of the image file
    Intent intent = new Intent(Intent.ACTION_ATTACH_DATA);
                    intent.setDataAndType(Uri.fromFile(imageFile), "image/*");
                    startActivity(Intent.createChooser(intent, "Select Wallpaper"));

其中imageFile是需要设置为墙纸的文件。