`

在自己应用中判断刚刚去往动态壁纸预览页面的壁纸是否设置成功

阅读更多

本来从动态壁纸预览页面设置一个动态壁纸回到桌面便可以看到桌面动态壁纸,可以观察得到自己的动态壁纸是否设置成功了(必须知道设置是否成功的结构,因为还有一些操作需要完成)!

但是现在是要在自己的应用中进入到动态壁纸预览页面(去往某个动态壁纸的预览页面,那里可以设置壁纸)点击“设置壁纸”之后回到自己的应用是看不到桌面的,而且又不想直接退出自己的应用!此时该怎么得到想要的结果呢?

在LiveWallpaperPreview的setLiveWallpaper方法中有一个setResult(RESULT_OK);也就是说可以回调得到结果,所以很兴奋的尝试了一把,结果发现设置动态壁纸成功后得到的resultCode=0.这是为什么呢?经过大神指点发现,正常的路径从动态壁纸列表进入的某动态壁纸预览页面是通过类的调用,也就是同一个进程,所以回调是有效的。但是我这个从应用进入到预览页面是通过广播进入的,是跨进程的,所以是无法得到该返回码的!而预览页面也没提供该结果的接口,所以这条路是行不通的!

解决:从预览页面回到自己应用有两种可能,一种是在预览页面直接按返回键,这种情况是没有设置自己特有的动态壁纸的,而另一种是点击了“设置壁纸”再回到自己应用的,这个时候系统已经将动态壁纸设置为自己特有的动态壁纸了,所以此时自己的动态壁纸已经在运行了。所以我只要从预览页面回到自己应用判断自己的动态壁纸是否已经运行了就可以知道设置壁纸是否成功了!(判断一个动态壁纸是否已经在运行

以回调方式去往动态壁纸预览页面

 

/**
     * 去往某个动态壁纸的预览页面,那里可以设置壁纸
     * 
     * @param context
     * @param packageName
     *            动态壁纸的包名
     * @param classFullName
     *            动态壁纸service类的类全名
     */
    @SuppressLint("InlinedApi")
    public static void startLiveWallpaperPrevivew(Activity activity, String packageName, String classFullName) {
        ComponentName componentName = new ComponentName(packageName, classFullName);
        Intent intent = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);
        intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, componentName);
        activity.startActivityForResult(intent, Configs.REQUEST_SET_LIVE_WALLPAPER);
    }

 回到自己应用时判断自己的动态壁纸是否正在运行

 

 

/**
     * 判断一个动态壁纸是否已经在运行
     * 
     * @param context
     *            :上下文
     * @param tagetPackageName
     *            :要判断的动态壁纸的包名
     * @return
     */
    public static boolean isLiveWallpaperRunning(Context context, String tagetPackageName) {
        WallpaperManager wallpaperManager = WallpaperManager.getInstance(context);// 得到壁纸管理器
        WallpaperInfo wallpaperInfo = wallpaperManager.getWallpaperInfo();// 如果系统使用的壁纸是动态壁纸话则返回该动态壁纸的信息,否则会返回null
        if (wallpaperInfo != null) { // 如果是动态壁纸,则得到该动态壁纸的包名,并与想知道的动态壁纸包名做比较
            String currentLiveWallpaperPackageName = wallpaperInfo.getPackageName();
            if (currentLiveWallpaperPackageName.equals(tagetPackageName)) {
                return true;
            }
        }
        return false;
    }

 返回到自己应用回调判断

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == Configs.REQUEST_SET_LIVE_WALLPAPER) {
            if (isLiveWallpaperRunning(context,tagetPackageName)) {
                //do something
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

 

 

1
0
分享到:
评论

相关推荐

    资源前后端分离式分布式微服务架构项目CMS页面静态化讲义+源码+视频

    页面静态化需求 理解 理解页面静态化及页面发布流程图 FreeMarker研究 ...判断条件会用freemarker的空值处理方法能够完成freemarker静态化的测试代码"页面静态化 应用 重点 能够完成页面静态化测试 "能够开发轮播图...

    00018《计算机应用基础》复习题.doc

    在Word2003文档中要设置"页边距",则应该使用( 页面设置 )。 22.在Word 2003中若要进入页眉页脚编辑区,可以单击菜单( 视图 ) 选择页眉.页脚命令。 23.Word中将文档中所有的"Computer"都改成"计算机",可用...

    《程序天下:JavaScript实例自学手册》光盘源码

    1.16 判断页面是否添加了W3C声明 1.17 屏蔽网页中的脚本 1.18 以频道模式打开页面 1.19 自动识别网页类型 1.20 在网页中动态添加Script脚本 1.21 用JavaScript随机修改页面的标题 1.22 判断网页加载完毕 1.23 嵌入...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例075 动态改变页面中单元格的背景颜色 109 实例076 屏蔽偶数次的数据输出 110 实例077 跳过数据输出中指定的记录 111 实例078 执行指定次数的循环 112 2.7 自定义函数 113 实例079 自定义函数截取中文字符串 113 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例075 动态改变页面中单元格的背景颜色 109 实例076 屏蔽偶数次的数据输出 110 实例077 跳过数据输出中指定的记录 111 实例078 执行指定次数的循环 112 2.7 自定义函数 113 实例079 自定义函数截取中文字符串 113 ...

    程序天下:JavaScript实例自学手册

    1.16 判断页面是否添加了W3C声明 1.17 屏蔽网页中的脚本 1.18 以频道模式打开页面 1.19 自动识别网页类型 1.20 在网页中动态添加Script脚本 1.21 用JavaScript随机修改页面的标题 1.22 判断网页加载完毕 1.23 嵌入...

    PHP开发实战1200例源码

    实例035 在页面中打印服务器时间 65 实例036 在页面中打印当前执行的PHP文件名 67 实例037 区分单引号和双引号 68 实例038 动态输出JavaScript代码 69 实例039 当数字遇到了字符串 70 实例040 PHP程序员的基础——...

    Visual C++编程技巧精选500例.pdf

    038 如何在文件对话框中预览位图文件? 039 如何从文件对话框中获取文件扩展名? 040 如何从文件对话框中获取文件标题? 041 如何获取文件对话框选择的多个文件? 042 如何在程序启动时弹出文件打开对话框? 第4章 标题栏...

    discuz!6.1GBK 版本论坛系统

    【新增】发帖 - Feed隐私设置,用户可选择是否在个人空间中公开自己的发帖或者回帖行为 【增强】发帖 - 可视化编辑器,界面更加简洁,每个标签按钮都可在后台设置开关和提示信息 【增强】发帖 - 论坛表情图片,可...

    计算机应用基础试卷十四.doc

    用户设定的页眉、页脚必须在页面视图方式或打印预览中才能看到 B.在word中,可以使偶数页和奇数页具有不同的页眉、页脚 C.用户设定的页眉、页脚在普通视图方式下无法显示 D.在word中,能同时编辑页眉、页脚窗口和...

    JavaScript开发基于React+Ant Design实现的仿网易云音乐官网网站音乐网站源码.zip

    等等由于歌曲播放时允许设置三种模式:顺序播放、单曲循环、随机播放,当歌曲播放完时要进行播放判断从而进行不同处理,当手动添加新歌曲时,首先在歌曲播放列表中进行寻找,若没有则添加歌曲进入播放列表中,若歌曲...

    超实用的jQuery代码段

    超实用的jQuery代码段精选近350个jQuery代码段,涵盖页面开发中绝大多数要点、技巧与方法,堪称史上最实用的jQuery代码参考书,可以视为网页设计与网站建设人员的好帮手。《超实用的jQuery代码段》的代码跨平台、跨...

    VeryIDE Apps 应用程序集 v1.5.6 GBK.rar

    更新 全部应用风格皮肤增补预览图 更新 文档DTD判断文式,更为准确有效 新增 风格切换自动保存的功能 新增 表单结果页选项百分比显示颜色随机更换功能 新增 广告位"包裹标签",用于每条广告使用HTML标签包裹 新增...

    VeryIDE Apps 应用程序集 v1.5.6 UTF8.rar

    更新 全部应用风格皮肤增补预览图 更新 文档DTD判断文式,更为准确有效 新增 风格切换自动保存的功能 新增 表单结果页选项百分比显示颜色随机更换功能 新增 广告位"包裹标签",用于每条广告使用HTML标签包裹 新增...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    实例203 隐藏应用程序在任务栏中的图标 272 实例204 实现动态系统托盘图标 272 实例205 实现气泡提示窗口 275 实例206 从桌面右下角显示的Popup窗口提醒 276 实例207 设置可执行文件的生成图标 278 第10章 MDI窗体和...

    uni-app 前后端实战课 -悦读.txt

    第1讲 : 创建项目、后端环境介绍 第2讲 : 封装全局登录检查函数并部署 第3讲 : uniapp app 端微信登录原理、条件编译 ... 第5讲 : 创建用户数据表,完成app端用户登录功能 ...第18讲 : 完成文章详情页面的图片预览功能

Global site tag (gtag.js) - Google Analytics