Android设置壁纸有许多方法,主要思路有两种:

1:通过WallpaperManager设置

2:通过系统程序设置

下文将分开说明:

<1>通过WallpaperManager设置

该方法可以直接将图片置为壁纸,对于所有平台的Android系统都使用,但无法裁剪/调整图片。

try {WallpaperManager wpm = (WallpaperManager) getActivity().getSystemService(Context.WALLPAPER_SERVICE);if (wallpaper != null) {wpm.setBitmap(bitmap);Log.i("xzy", "wallpaper not null");}
} catch (IOException e) {Log.e(TAG, "Failed to set wallpaper: " + e);
}

AndroidManifest.xml中需要申明权限:

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

<2>通过系统程序设置

通过系统应用设置的优点是可以裁剪图片,设置后的壁纸效果最好,操作体验和平台保持一致。并且该方法不许要申明权限

可行的方法有两种

1:调用系统裁剪Activity,通过裁剪Activity设置壁纸:

            Intent intent = new Intent("com.android.camera.CropImage");int width = getActivity().getWallpaperDesiredMinimumWidth();int height = getActivity().getWallpaperDesiredMinimumHeight();intent.putExtra("outputX",         width);intent.putExtra("outputY",         height);intent.putExtra("aspectX",         width);intent.putExtra("aspectY",         height);intent.putExtra("scale",           true);intent.putExtra("noFaceDetection", true);intent.putExtra("setWallpaper",    true);intent.putExtra("data", ((BitmapDrawable) wallpaper).getBitmap());startActivity(intent);

该方法有一个弊端,com.android.camera.CropImage是一个可选Action,而非标准Action,因此并分所有Android设备都支持该API,许多设备会出现ActivityNotFoundException.

2.调用系统的Intent.ACTION_ATTACH_DATA,该Intent会唤起所有的设置壁纸程序以及设置联系人头像程序,用户可以通过ChooseActivity进行选择:

该Intent是一个标准Intent,因此所有设置都会支持。

                Intent intent = new Intent(Intent.ACTION_ATTACH_DATA);intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);intent.putExtra("mimeType", "image/*");Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(getActivity().getContentResolver(),((BitmapDrawable) wallpaper).getBitmap(), null, null));intent.setData(uri);startActivityForResult(intent, SET_WALLPAPER);

以上这些方法推荐只用最后一种,原因很简单:体验好,适配成本低。

作者:xzy2046,转载需注明。博客主页:http://blog.csdn.net/xzy2046

Android设置壁纸的几种方案相关推荐

  1. Android 设置音量的几种方法

    Android 设置音量的几种方法 Android 设置音量的几种方法 方法一.被动设置法 方法二.主动设置法 渐进设置 直接设置 按键设置 Android 设置音量的几种方法 在Android下,音 ...

  2. android壁纸设置,android设置壁纸 的方法

    前几天看到豌豆荚上面风景壁纸的APP 下载得挺火,闲来无事心痒痒的想写一个壁纸程序.由于是Android开发新手,忘记了一个很重要的开发步骤,就是对权限的设置.开始以为自己写的壁纸设置程序有问题,经过 ...

  3. Android阴影实现的几种方案

    作者:newki 链接: https://juejin.cn/post/7149706291261210654 圆角容器?自定义圆角容器?自定义圆角加阴影容器? 太难了,不知道大家有没有同款UI设计师 ...

  4. Android设置壁纸

    1.设置壁纸,因为load图片时可能因为图片太大而OOM,目前有两种思路. sendUri为图片的URI. 1.调用系统intent来设置,即通过传递一个image对象,系统luancher选择可以处 ...

  5. android++设置壁纸,Android Launcher 设置壁纸

    如果是KitKat以下版本,那么会调用以下方法: int width = getWallpaperDesiredMinimumWidth(); int height = getWallpaperDes ...

  6. android 设置壁纸,开启出现短暂黑屏问题

    [解决] 千万不要去设置壁纸的大小:(调用如下接口,那么你就错了) int screenWidth = Resources.getSystem().getDisplayMetrics().widthP ...

  7. Android 设置壁纸被拉伸(固定壁纸 )

    做一个设置壁纸的功能,漂漂亮亮的壁纸一设置就被拉伸得超级难看.有图有真相: 壁纸是这样的: 设置后就这样这样了: 修改代码后就这样这样了: 代码修改如下: 具体的宽和高可以根据需求修改 Wallpap ...

  8. Android性能优化的5种方案

    指标 量化性能的指标有很多,但最重要的就是以下5种: 包大小 响应时间 内存 CPU 耗电量 优化性能就是可以从以上5点入手. 包大小优化 顾名思义就是减少apk包体积大小,apk大小主要取决于res ...

  9. android线程优先级大小,android 设置线程优先级 两种方式

    1) android.os.Process.setThreadPriority (int priority)或android.os.Process.setThreadPriority (int tid ...

最新文章

  1. 云知声CEO黄伟:AI对产业的驱动不仅是创新更是颠覆
  2. Cesium官方教程8-- 几何体和外观效果
  3. python list 去重_Python中对列表list去重
  4. 鸡啄米vc++2010系列11(非模态对话框的创建)
  5. java实现系统多级文件夹复制
  6. jvm 调优_Java架构—JVM调优
  7. 如何调节电脑显示屏来保护双眼的小技巧
  8. 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(1)
  9. 使用SniperPhish进行电子邮件钓鱼
  10. 1.实验:删除CentOS6下/boot/vmlinuz文件修复之
  11. android chrome 无法下载,Android Chrome浏览器将支持下载暂停和取消
  12. 彻底清除计算机病毒的方式是,彻底清除电脑病毒的小方法
  13. 新房子灶台风水方位设在什么地方比较好?
  14. 上亿会员 为b站会员购众筹项目打下消费基础
  15. 短视频开发,录制视频添加背景音乐功能实现
  16. 2019软件测试学习教程(学习路线+课程大纲+视频教程+学习工具)
  17. 如何理解ANOVA中的F值与P值
  18. C语言FILE详解(COME ON)
  19. LiveRTMP内置IPCamera实现RTMP直播摄像机功能
  20. Android killer 回编译失败

热门文章

  1. Spring:been的生命周期
  2. IPD解读—需求管理(OR)流程方法论
  3. 地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02) 的转换算法
  4. STFT和声谱图,梅尔频谱(Mel Bank Features)与梅尔倒谱(MFCCs)
  5. 互联网创业需要注意了!
  6. 计算机网络技术 选修 沪科版教案,高中物理第3章从电表电路到集成电路3.5逻辑电路与集成电路教案沪科版选修3_1...
  7. linux动态库so调用外部so,运行时出现undefined symbol
  8. SCU 4444 Travel 【次完全图最短路】
  9. 计算机如何安装无线网络适配器,无线网络适配器是什么,无线网络适配器如何设置...
  10. 乔布斯的康熙盛世,库克的雍正王朝——纪念乔布斯逝世5周年