以编程方式设置主屏幕壁纸(更改主屏幕和锁定屏幕)

Posted

技术标签:

【中文标题】以编程方式设置主屏幕壁纸(更改主屏幕和锁定屏幕)【英文标题】:Setting Home Screen wallpaper programmatically (Changing home screen and lock screen) 【发布时间】:2019-07-22 12:44:42 【问题描述】:

如果您单击“设置为墙纸按钮”,我有一个更改主屏幕墙纸的应用程序,但如果您单击此按钮更改主屏幕并锁定屏幕墙纸。 我想只是更换主屏幕壁纸

这里是代码

 button1.setOnClickListener(new OnClickListener() 

                @Override
                public void onClick(View v) 
                    WallpaperManager myWallpaperManager
                            = WallpaperManager.getInstance(getApplicationContext());

                    try 


             myWallpaperManager.setResource(+ R.drawable.image_0);

                        Toast.makeText(
                                getBaseContext(),
                                "Wallpaper has been updated",
                                Toast.LENGTH_SHORT).show();

                    
                    catch (IOException e) 
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    
                
            );

【问题讨论】:

【参考方案1】:

您可以使用 WallpaperManager 将图像设置为墙纸。

使用...将图像设置为墙纸

myWallpaperManager.setStream(fileInputStream, null, true, WallpaperManager.FLAG_SYSTEM);

要将图像设置为锁定屏幕使用...

myWallpaperManager.setStream(fileInputStream, null, false, WallpaperManager.FLAG_LOCK);

在这个文件中,InputStream 是您要设置为墙纸的图像文件的输入流。

您还可以使用...将位图设置为墙纸和锁定屏幕

壁纸:

myWallpaperManager.setBitmap(imageBitmap,null,true,WallpaperManager.FLAG_SYSTEM);

对于锁屏:

myWallpaperManager.setBitmap(imagebitmap, null, false, WallpaperManager.FLAG_LOCK);

【讨论】:

【参考方案2】:

你可以通过使用 FLAG_SYSTEM 来做到这一点

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)    
    wallpaperManager.setStream(input, null, false, WallpaperManager.FLAG_SYSTEM) 

【讨论】:

以上是关于以编程方式设置主屏幕壁纸(更改主屏幕和锁定屏幕)的主要内容,如果未能解决你的问题,请参考以下文章

仅设置 Android 主屏幕壁纸

苹果手机怎么在主屏幕左上方设置自己的名字?

如何检测我的动态壁纸是在预览/“设置壁纸”活动中还是在主屏幕上运行

iOS - 以编程方式截取跳板(主屏幕)的屏幕截图

如何以编程方式使用密码设置屏幕锁定?

以编程方式将图标添加到主屏幕