Android实例-手机安全卫士(三十六)-根据Service是否开启确定CheckBox选中状态

一、目标

  1、根据service是否在后台运行情况来确定CheckBox的选中状态;

  2、解决"设置中心"的“开启来电号码显示归属地”功能在退出程序再进入时选中状态消失,在任务管理器中关闭“来显”服务时,功能仍为选中状态

二、代码实现

  1、在src文件下新建一个包(取名com.example.mobilesafe.utils)用于存放各种工具类;

  2、在工具类包下新建类(取名ServiceUtils,无需继承任何类),用于校验某个服务是否在正常运行(开启);在新建类(ServiceUtils)中创建返回值类型为boolean类型的静态方法(取名isServiceRunning,用于检验服务是否正常运行),传入参数两个分别是上下文(Context,因为在该方法中需通过上下文得到系统服务)和指定要校验是否正常运行的服务名称(String类型的参数),在检验服务的静态方法中:

    (1)通过上下文的getSystemService(String name)方法得到系统服务,由参数name获取Activity和Service状态(即name参数值为Context.ACTIVITY_SERVICE),强转,该方法返回ActivityManager对象(取名am);

    (2)通过ActivityManager对象(am)的getRunningServices(int maxNum)方法获取正在运行的服务的信息集合对象List<RunningServiceInfo>(取名serviceInfos);

    (3)通过增强for循环遍历服务信息集合(serviceInfos),在增强for循环中:

      ①通过正在运行服务信息对象RunningServiceInfo(取名info)的service获取服务组件,再通过组件的getClassName()获取服务名称,返回String对象(取名name);

      ②通过if语句判断传入的服务名称(即2中的静态方法第二个传入参数)是否等于(equal()方法)获取的服务名称相等则返回true;

    (4)返回false;

新建的服务是否正在运行类和静态检验方法代码如下:

 1 public class ServiceUtils {
 2     
 3     /**
 4      * 检验某个服务是否还在正常运行     
 5      * @param context:需要关联的上下文
 6      * @param serviceName:需要检验的服务全路径名称
 7      * @return
 8      */
 9     public static boolean isServiceRunning (Context context,String serviceName){
10         //检验服务是否正常运行        
11         ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
12         List<RunningServiceInfo>  serviceInfos = am.getRunningServices(100);
13         for(RunningServiceInfo info:serviceInfos){
14             String name = info.service.getClassName();
15             if(serviceName.equals(name)){
16                 return true;
17             }
18         }
19         return false;
20     }
21 }
View Code

 

  3、在“设置中心”的页面代码(SettingActivity)中“设置是否开启来电号码归属地显示功能”模板中通过new Intent(this,ShowComingPhoneAdd.class)实例化一个Intent对象(名称为showAddIntent)之后,通过2中新建的工具类(ServiceUtils)的校验某个服务是否在正常运行方法isServiceRunning(Context context, String serviceName)(即新建的静态方法)检验指定的服务是否正在运行,参数context上下文即为“设置中心”类的上下文(SettingActivity.this),参数serviceName服务名称即为Intent实例化时传入的服务(需使用全路径名称,即com.example.mobilesafe.service.ShowComingPhoneAdd)。该方法返回值类型为boolean(取名isServiceRunning)。

  4、通过if...else...语句和isServiceRunning条件判断指定的服务是否正在运行,若正在运行则设置单选框为选中状态,若未运行则设置单选框为空白状态;

“设置中心”页面中新增部分代码:

 1 //(这句是新增代码前的语句)showAddIntent = new Intent(this,ShowComingPhoneAdd.class);
 2 //根据自定义的服务是否运行检验方法判断“来电号码归属地显示服务(ShowComingPhoneAdd)”是否正在运行
 3         boolean idServiceRunning = ServiceUtils.isServiceRunning(SettingActivity.this, "com.example.mobilesafe.service.ShowComingPhoneAdd");
 4         if(idServiceRunning){
 5             //服务正在运行,设置显示功能为选中状态
 6             setting_show_incoming_add.setChecked(true);
 7         }else{
 8             //服务未运行,设置显示功能为空白状态
 9             setting_show_incoming_add.setChecked(false);
10         }    
View Code

   5、解决当应用最小化后通过任务管理器杀死服务后,回至应用时仍为选中的问题。在“设置中心”的页面代码(SettingActivity)中复写“onResume()”方法,在该方法中重复第3、4步。

转载于:https://www.cnblogs.com/Red-Shark/p/4466541.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

把java复制到e_编写一个程序,将e:\java目录下的所有.java文件复制到e:\jad目录下...

package cn.io.file.demo;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.FilenameFilter;import java.io.IOException;/*** 编写一个程序&#xff0c;将e:\java目录下…

HTTP - PUT 上传文件/Shell

今天遇到几个PUT上传的点&#xff0c;但是都没利用起来。一怒之下&#xff0c;在自己本地试了一下。步骤如下&#xff1a; 一、环境&#xff1a; 首先&#xff0c;根据 配置Apache服务器支持向目录PUT文件 更新一下httpd.conf文件&#xff0c;重启所有服务。 二、HTTP - PUT PU…

Pro Android学习笔记(三三):Menu(4):Alternative菜单

什么是Alternative menu&#xff08;替代菜单&#xff09; 举个例子&#xff0c;Activity显示一个文本文件。如果用户想对文本文件进行编辑&#xff0c;Activity不提供编辑能力&#xff0c;但可由其他activity或者其他应用提供。我们将相关信息存储在一个intent中&#xff0c;例…

java实现手机开关机_Android 系统重启与关机:Java 代码实现

粘贴一篇关于权限的文章&#xff1a;最近在做个东西&#xff0c;巧合碰到了sharedUserId 的问题&#xff0c;所以收集了一些资料&#xff0c;存存档备份。安装在设备中的每一个apk文件&#xff0c;Android 给每个 APK 进程分配一个单独的用户空间,其 manifest 中的 userid 就是…

C# 泛型的协变和逆变

1. 可变性的类型&#xff1a;协变性和逆变性 可变性是以一种类型安全的方式&#xff0c;将一个对象当做另一个对象来使用。如果不能将一个类型替换为另一个类型&#xff0c;那么这个类型就称之为&#xff1a;不变量。协变和逆变是两个相互对立的概念&#xff1a; 如果某个返回的…

java数据类型的站位_Java 数据类型在实际开发中应用

在前边的文章中&#xff0c;我已经介绍了Java核心的容器IO等&#xff0c;现在我来说一下java中的数据类型。在java中&#xff0c;一切东西皆为对象(这句话意思是java中绝大数情况都用对象)&#xff0c;极少数不是对象的&#xff0c;也存在与之对应的对象(比如基本数据类型存在与…

块状元素的居中,首先设置宽度,再设 margin: 0 auto

块状元素的居中&#xff0c;首先设置宽度 width"10px"&#xff0c;再设 margin: 0 auto; 。转载于:https://www.cnblogs.com/npk19195global/p/4475576.html

java amf3_Java AMF3 反序列化漏洞分析

写在前面的话AMF(Action Message Format)是一种二进制序列化格式&#xff0c;之前主要是Flash应用程序在使用这种格式。近期&#xff0c;Code White发现有多个Java AMF库中存在目前&#xff0c;漏洞相关信息已上报至美国CERT(详情请参考美国CERT VU#307983)概述目前&#xff0c…

typecho除了首页其他大部分网页404怎么办?

server {listen 80;server_name blog.localhost; #绑定域名index index.htm index.html index.php; #默认文件root /data/webroot/blog; #网站根目录location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fastcgi_params;}if (-f $request_filenam…

java能写复杂的查询么_spring-data-jpa 复杂查询的写法(包含or的查询)

场景如下&#xff1a;很简单的CMS常用查询&#xff0c;栏目下有多个子栏目&#xff0c;子栏目有包含内容。public class Channel{....private String parentIds;//所有的父节点&#xff0c;简化查询策略 例如 0,1,11,private List channels Lists.newArrayList(); //所有的儿子…

在Ubuntu上安装misterhouse

配置Ubuntu 您将对Ubuntu的配置做某些微小更改以便远程管理MH BOX和安装Misterhouse正常运行所需的必要的软件模块。首先要进行系统升级。因为系统提供的欧洲源更新实在是太慢了&#xff01;更换源是为了节省时间&#xff0c;尽快得将系统更新一遍。安装完系统后这是重要的一个…

java+路径拦截实现_SpringBoot实现拦截器

首先&#xff0c;你的项目要能跑起来&#xff0c;且基于springboot的boot的拦截器不用配置web.xml&#xff0c;按照特定名字书写(后缀注解)&#xff0c;它会自动识别(位置随便放&#xff0c;只要在代码目录下就可以)1.拦截器 SessionInterceptor.javapackage com.hfanss.blog.u…

Codeforces 524C Idempotent functions

题目链接&#xff1a;http://codeforces.com/problemset/problem/542/C 题目大意&#xff1a;给定一种运算f&#xff0c;对于输入的数组来说&#xff0c;一步操作&#xff0c;f(x) a[x]&#xff0c;两步操作&#xff0c;f^2(x) a[a[x]]....倘若每次进行k步操作之后&#xff0…

c 获取mysql安装路径_linux查看mysql安装路径

Linux下查看mysql、apache是否安装,并卸载。指令 ps -ef|grep mysql 得出结果root 17659 1 0 2011 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir/var/lib/mysql --socket/var/lib/mysql/mysql.sock --log-error/var/log/mysqld.log --pid-file/var/run/mysqld/mysqld.p…

微信JS-SDK

<div class"lbox_close wxapi_form"><h3 id"menu-basic">基础接口</h3><span class"desc">判断当前客户端是否支持指定JS接口</span><button class"btn btn_primary" id"checkJsApi">c…

java exif 语言编码_Java读取图片EXIF信息的代码

Java读取图片EXIF信息的代码本文实例讲述了Java读取图片EXIF信息的方法。分享给大家供大家参考。具体分析如下&#xff1a;首先介绍一下什么是EXIF&#xff0c;EXIF是Exchangeable Image File的缩写&#xff0c;这是一种专门为数码相机照片设定的格式。这种格式可以用来记录数字…

Java和pathion_Spring配置中的classpath:与classpath*:的区别

概念解释及使用场景&#xff1a;classpath是指WEB-INF文件夹下的classes目录。通常我们一般使用这种写法实在web.xml中&#xff0c;比如spring加载bean的上下文时&#xff0c;如下&#xff1a;contextConfigLocationclasspath*:/spring-context-*.xmlorg.springframework.web.c…

PHP单引号 ' ',没有任何意义,对所引内容不经任何处理直接拿过来

单引号 没有任何意义&#xff0c;对单引号内部内容不经任何处理直接拿过来。转载于:https://www.cnblogs.com/npk19195global/p/4490758.html

UILabel 宽高自适应

在iOS中&#xff0c;经常遇到需要根据字符串的内容动态指定UILabel&#xff0c;UITextView,UITableViewCell等的高度的情况&#xff0c;这个时候就需要动态的计算字符串内容的高度&#xff0c;下面是计算的方法&#xff1a; /** method 获取指定宽度情况ixa&#xff0c;字符串…

php debug build no,php – 尝试安装xdebug:找不到配置文件

我按照这些说明下载xdebug&#xff1a;http://xdebug.org/wizard.php.向导的输出是这样的&#xff1a;SummaryXdebug installed: noServer API: Apache 2.0 HandlerWindows: noZend Server: noPHP Version: 5.4.17Zend API nr: 220100525PHP API nr: 20100525Debug Build: noTh…