一,概述

Android系统升级到5.0之后做了不少的变化(5.0变化),开发人员一定要注意这些变化,要不然就有的折腾了。这次最大的变化应该是把Dalvik虚拟机改成了ART运行时),后续会专门讲解这一块。其他的都是一些零碎的问题,例如前段时间发了一篇Android 5.0之后修改了HashMap的实现(传送门)。这篇主要讲一下遇到跟服务相关的问题。

二。详情

服务身为Android四大组件之一,它的使用频率还是比较高的,并且现在主要都是运用在比较关键的部位,例如升级推送等。在Android 5.0之后google出于安全的角度禁止了隐式声明意图来启动服务。也禁止使用Intent过滤器。否则就会抛出异常出来。

解决方式一:

1 将隐式启动转换为显式启动,兼容编译sdk5.0以后版本

//将隐式启动转换为显式启动,兼容编译sdk5.0以后版本

public Intent getExplicitIntent(Context context,Intent implicitIntent){

PackageManager pm = context.getPackageManager();

List resolveInfos = pm.queryIntentServices(implicitIntent, 0);

if (resolveInfos == null || resolveInfos.size()!= 1) {

return null;

}

Intent explicitIntent = null;

ResolveInfo info = resolveInfos.get(0);

String packageName = info.serviceInfo.packageName;

String className = info.serviceInfo.name;

ComponentName component = new ComponentName(packageName,className);

explicitIntent = new Intent(implicitIntent);

explicitIntent.setComponent(component);

return explicitIntent;

}

复制以上方法

直接使用//设别服务连接桥

private ServiceConnection conn = new ServiceConnection(){

@Override

public void onServiceConnected(ComponentName name, IBinder serviceBinder) {

LogUtils.d("aidlService服务连接成功");

if(serviceBinder != null){ //绑定成功

AidlDeviceService serviceManager = AidlDeviceService.Stub.asInterface(serviceBinder);

onDeviceConnected(serviceManager);

}

}

@Override

public void onServiceDisconnected(ComponentName name) {

LogUtils.d("AidlService服务断开了");

}

};

//绑定服务

public void bindService(){

BaseMainActivity.this.bindService(getExplicitIntent(this,new Intent(LKL_SERVICE_ACTION)),

conn, Context.BIND_AUTO_CREATE);

//5.0以后的版本会抛出异常方法已被淘汰

//    Intent intent = new Intent();

//    intent.setAction(LKL_SERVICE_ACTION);

//    intent.setPackage("");

//    boolean flag = bindService(intent, conn, Context.BIND_AUTO_CREATE);

//    if(flag){

//       LogUtils.d("服务绑定成功");

//    }else{

//       LogUtils.d("服务绑定失败");

//    }

}

解决方式二:直接写上包名和标示

Intent intent = new Intent("com.gnss.GNSSService");

intent.setAction(GPSBOARDCONTROL);//Service能够匹配的Action

intent.setPackage("com.gnss.ssserver");//应用的包名

context.bindService(intent,serviceConnection, Context.BIND_AUTO_CREATE);

判断应用是否安装的方法:

//判断应用是否安装

public boolean isAppInstalled(Context context, String packageName) {

final PackageManager packageManager = context.getPackageManager();

List pinfo = packageManager.getInstalledPackages(0);

if (pinfo != null) {

for (int i = 0; i

if (pinfo.get(i).packageName.contains(packageName)) {                    return true;

}

}

}

return false;

}

android 5.0判断服务是否开启中,android5.0之后版本服务出现的显示问题解决方案相关推荐

  1. android 5.0官方安装包,Android5.0刷机包怎么安装 Android5.0刷机包安装教程

    谷歌发布了Android5.0系统,目前陆续公布了可以支持的机型,如果已经知道自己的该机能够配适的话,升级Android5.0也是相当简单的.Android5.0刷机包如何安装? Android5.0 ...

  2. android7.0夜间模式,安卓7.0夜间模式怎么开启 安卓7.0正式版夜间模式开启方法介绍...

    类型:系统工具大小:5.1M语言:中文 评分:10.0 标签: 立即下载 安卓7.0的系统已经正式的发布了,对于很多的用户来说,这次的发布也是带来了很多的全新的更新,不过在谷歌的演示中,安卓7.0是有 ...

  3. android 耳机放大,耳放PHA-3如何连接Android5.0的智能设备(手机/平板电脑)?

    耳放PHA-3如何连接Android5.0的智能设备(手机/平板电脑)? 以Andrioid5.0系统的Xperia Z5连接PHA-3为例: 1.打开Xperia,使用Xperia专用数字连接线(P ...

  4. 驰音车主服务终端开启大数据时代“汽车+音乐”服务新模式

    现在的社会是一个高速发展的社会,科技发达,信息流通,人们之间的交流越来越密切,生活也越来越方便,大数据就是这个高科技时代的产物.科学技术的飞速发展以不可逆转的姿态把我们的生活带入了"互联网+ ...

  5. Android中遇到button按钮设置背景图片无法显示的解决方案

    给button设置了background的属性却显示不出来 1.在图片导入时选错位置,应该选择第一个位置,如果选了第二个图片后面会有(v24)[如下图]就有可能加载不出来.  新版引入drawable ...

  6. android+5.0+ble,android5.0(Lollipop) BLE Peripheral牛刀小试(示例代码)

    转载请表明作者:http://blog.csdn.net/lansefeiyang08/article/details/46468743 知道Android L对蓝牙对了一些改进.包含加入A2dp s ...

  7. android ble peripheral,android5.0(Lollipop) BLE Peripheral牛刀小试

    转载请表明作者:http://blog.csdn.net/lansefeiyang08/article/details/46468743 知道Android L对蓝牙对了一些改进.包含加入A2dp s ...

  8. Linux下检测FTP服务并开启FTP服务

    Linux下检测FTP服务并开启FTP服务 1. 检测FTP服务是否开启 通过查询提供FTP服务的进程是否存在 Shell代码   ps -ef | grep ftp   并未找到任何包含ftp关键字 ...

  9. 字符与字符串中的‘\0‘, ‘0‘, 0;strlen()函数求字符串长度计算方法(sizeof()验证)

    先问一个问题:如下字符串or字符数组,用strlen函数求长度各是多少? /*01*/char * str1 = "abc"; /*02*/char * str2 = " ...

  10. Android5.0,6.0,7.0,8.0新特性整理

    背景 Android5.0(Android Lollipop)是谷歌公司2014年10月发布的全新安卓系统,至今已经两年多.然而由于国产手机对安卓ROM的深度定制或修改,以及手机厂商.芯片制造商.运营 ...

最新文章

  1. LeetCode(7.整数反转)JAVA
  2. Codeforces Round#434 DIV.2
  3. js 得到select所有option里的值
  4. Python 中,字符串连接效率最高的方式是?一定出乎你的意料
  5. TCPIP / MTU 和 MSS 的区别和联系
  6. 设计模式:组合模式(Composite)
  7. 基于TensorFlow开发人脸识别
  8. Android 图片放大缩小
  9. mysql按月分列统计_实现mysql按月统计的教程
  10. php7数据库备份还原,基于thinkphp的数据库在线备份还原
  11. html5发布原文,HTML5 第二份草案发布
  12. php 纯文本输出_关于PHP的语法介绍,新手必看
  13. 【CCCC】L3-020 至多删三个字符 (30分),序列dp+去重
  14. 永恒之蓝漏洞复现(包括常见问题处理)和修复方案
  15. 协同办公市场暴增背后:融云通信能力是需求重点
  16. Web自动化漏洞检测工具:Xray
  17. java timer暂停_暂停/停止和启动/恢复Java TimerTask?
  18. 重装win10遇到的坑
  19. 如何零基础转行成为一个自信的前端达人
  20. pandas处理excel单元格合并后的列

热门文章

  1. 软件测试用例篇总结概述
  2. 后台管理系统之题库管理
  3. python国际象棋游戏_国际象棋版AlphaZero出来了 还开源了Keras实现
  4. 经纬度及其与坐标系的转换
  5. 绿皮书答案:A Practical Guide to Quantitative Finance Interviews
  6. 磁盘管理查看内存软件——WizTree使用
  7. Linux - Kafka集群搭建
  8. Python常用模块13-python的cx_Oracle模块
  9. 电商业务中的五大机器学习问题!
  10. plm服务器 硬件性能,PLM 性能问题