`

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

阅读更多

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

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

在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
分享到:
评论

相关推荐

    jquery百度百科底部浮动导航页面滚动预览

    5. **定位和预览效果**:在`scroll`函数内部,我们可以遍历每个导航链接,根据页面滚动的位置判断是否达到预览区域。如果达到,可以通过添加CSS类来改变链接的样式,显示预览效果。例如,为当前可见区域的链接添加一...

    android自定义相机页面以及预览

    本文将详细解析如何在Android应用中创建一个自定义的相机界面,并实现预览功能。 首先,我们需要理解Android的Camera API。在Android 3.0(API级别11)之前,我们主要使用`Camera`类来访问和控制相机硬件。从...

    JS判断并预览客户端上传图片

    在JavaScript(JS)中,处理客户端的图片上传是一项常见的任务,尤其在网页应用中,我们需要确保用户上传的图片符合特定的格式和大小限制,同时提供实时预览功能以提升用户体验。下面将详细介绍如何实现这些功能。 ...

    一些用VB实现打印预览的实例

    9. **多页处理**:如果打印内容跨越多页,需要计算每页的边界,并在`PrintPage`事件中判断是否需要绘制新的页面。 10. **自定义打印逻辑**:对于复杂的打印需求,例如分栏、页眉页脚、水印等,需要编写自定义逻辑,...

    C#实现打印预览和打印程序

    7. **多页处理**:如果文档内容超过一页,需要在`OnPrintPage`事件中判断是否需要绘制下一页,通常通过`e.HasMorePages`属性来实现。 8. **用户界面集成**:在应用程序中,你可以创建菜单项或按钮来触发打印预览和...

    js调用word 直接打印预览功能

    在本文的示例中,`new ActiveXObject("word.Application")`用于创建一个Word应用程序实例,从而能够在Web页面中控制Word。 #### 2. 打开与操作Word文档 通过`myDocApp.documents.open(href)`语句,可以打开指定URL...

    HarmonyOS最新版基础认证题目(6月21日之后)

    在 Column 和 Row 容器组件中,justifyContent 用于设置子组件在主轴方向上的对齐格式,alignItems 用于设置子组件在交叉轴方向上的对齐格式。** - **解析:** 正确。`justifyContent`和`alignItems`分别用于控制子...

    纯javascript实现上传图片前图片预览,判断图片大小

    在本文中,我们将深入探讨如何使用纯JavaScript实现上传图片前的预览功能,并且检查图片的大小,确保兼容性覆盖到IE7至IE10、Firefox以及Chrome等主流浏览器。这个功能对于用户交互体验有着重要的作用,因为它允许...

    图片上传检测及预览.

    在“图片上传检测及预览”这个主题中,我们主要关注两个关键方面:上传前的图片检测和上传过程中的实时预览。这两个功能都是为了提供更好的用户体验,确保上传的图片符合规定格式和大小,并能在上传后即时展示。 **...

    京东多张图片的预览放大镜效果

    在IT行业中,用户体验是至关重要的,特别是在电商领域。京东作为中国知名的电商平台,其网页设计往往包含许多创新功能,以提升用户的购物体验。本项目“京东多张图片的预览放大镜效果”就是一个典型的实例,它从京东...

    printdocument实现多页打印功能

    如果需要打印多页,开发者需要在该事件中判断当前页面是否是最后一页,如果不是,就调用`e.HasMorePages = true;`来指示还有更多页面需要打印。在所有页面打印完成后,`e.HasMorePages`应被设置为`false`。 页面...

    pdf.js使用文件流预览pdf

    总的来说,通过使用PDF.js的文件流预览功能,开发者可以创建一个高效且兼容性强的Web应用,让用户在浏览器中流畅地预览PDF文件。这在处理大量或大尺寸PDF时尤其有益,因为它减少了内存占用,提高了加载速度。在实际...

    中国石油大学计算机应用基础在线作业3套.pdf

    本资源是中国石油大学计算机应用基础在线作业3套.pdf,包含多个与计算机应用基础相关的多选题和判断题,涵盖了Word、PowerPoint等办公软件的使用技巧和理论知识。 知识点1:Word中的菜单命令 在Word中,“文件”...

    使用js实现了上传图片的完成及预览,格式判断。

    在网页开发中,用户上传图片是一项常见的功能,特别是在社交媒体、电子商务和内容分享平台。本教程将详细介绍如何使用JavaScript实现图片的上传、预览以及格式判断。JavaScript作为客户端脚本语言,能够提供实时交互...

    图片上传本地预览插件

    在IT领域,图片上传本地预览插件是一个常见的功能组件,尤其在网页应用和桌面软件中,它极大地提升了用户体验。这个插件的核心作用是让用户在实际上传图片到服务器之前,能够在本地环境中预览图片效果,确保图片的...

    在Windows窗体应用程序中打印和制作报表(精).doc

    在Windows窗体应用程序中,打印和制作报表是常见的需求,涉及到多个控件和类的使用。以下是关于这个主题的详细知识点: 1. **PrintDocument 控件**:在Windows Forms应用程序中,PrintDocument类是一个关键组件,它...

    相册图片放大预览,并上传图片判断大小,类开型及大小,并且图片可以左右移动

    在IT领域,尤其是在Web开发中,创建一个交互式的图片预览和上传系统是常见的需求。这个项目中的"相册图片放大预览,并上传图片判断大小,类开型及大小,并且图片可以左右移动"功能,涉及到的技术主要包括jQuery库、...

    pdf预览与下载

    在加载PDF文件时,可以检查`PDFDocumentProxy`的`info`属性获取文件元数据,判断文件是否具有特定的权限设置,并据此调整用户界面。 6. **提供下载功能**:为了让用户能够下载PDF文件,可以在页面上添加一个下载...

    打印的代码已经打印预览

    以上代码展示了如何在 Windows Forms 应用程序中实现基本的打印和打印预览功能。通过使用 `PrintDocument`、`PrintDialog` 和 `PrintPreviewDialog` 类,我们可以轻松地添加打印功能到应用程序中。

    【ASP.NET编程知识】基于ASP.NET+easyUI框架实现图片上传功能(判断格式+即时浏览 ).docx

    基于ASP.NET+easyUI框架实现图片上传功能是指在ASP.NET web应用程序中使用easyUI框架来实现图片上传功能,该功能包括判断图片格式是否正确和即时浏览图片。下面是相关知识点的总结: 1. ASP.NET框架:ASP.NET是微软...

Global site tag (gtag.js) - Google Analytics