android 5.0判断服务是否开启中,android5.0之后版本服务出现的显示问题解决方案
一,概述
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之后版本服务出现的显示问题解决方案相关推荐
- android 5.0官方安装包,Android5.0刷机包怎么安装 Android5.0刷机包安装教程
谷歌发布了Android5.0系统,目前陆续公布了可以支持的机型,如果已经知道自己的该机能够配适的话,升级Android5.0也是相当简单的.Android5.0刷机包如何安装? Android5.0 ...
- android7.0夜间模式,安卓7.0夜间模式怎么开启 安卓7.0正式版夜间模式开启方法介绍...
类型:系统工具大小:5.1M语言:中文 评分:10.0 标签: 立即下载 安卓7.0的系统已经正式的发布了,对于很多的用户来说,这次的发布也是带来了很多的全新的更新,不过在谷歌的演示中,安卓7.0是有 ...
- android 耳机放大,耳放PHA-3如何连接Android5.0的智能设备(手机/平板电脑)?
耳放PHA-3如何连接Android5.0的智能设备(手机/平板电脑)? 以Andrioid5.0系统的Xperia Z5连接PHA-3为例: 1.打开Xperia,使用Xperia专用数字连接线(P ...
- 驰音车主服务终端开启大数据时代“汽车+音乐”服务新模式
现在的社会是一个高速发展的社会,科技发达,信息流通,人们之间的交流越来越密切,生活也越来越方便,大数据就是这个高科技时代的产物.科学技术的飞速发展以不可逆转的姿态把我们的生活带入了"互联网+ ...
- Android中遇到button按钮设置背景图片无法显示的解决方案
给button设置了background的属性却显示不出来 1.在图片导入时选错位置,应该选择第一个位置,如果选了第二个图片后面会有(v24)[如下图]就有可能加载不出来. 新版引入drawable ...
- android+5.0+ble,android5.0(Lollipop) BLE Peripheral牛刀小试(示例代码)
转载请表明作者:http://blog.csdn.net/lansefeiyang08/article/details/46468743 知道Android L对蓝牙对了一些改进.包含加入A2dp s ...
- android ble peripheral,android5.0(Lollipop) BLE Peripheral牛刀小试
转载请表明作者:http://blog.csdn.net/lansefeiyang08/article/details/46468743 知道Android L对蓝牙对了一些改进.包含加入A2dp s ...
- Linux下检测FTP服务并开启FTP服务
Linux下检测FTP服务并开启FTP服务 1. 检测FTP服务是否开启 通过查询提供FTP服务的进程是否存在 Shell代码 ps -ef | grep ftp 并未找到任何包含ftp关键字 ...
- 字符与字符串中的‘\0‘, ‘0‘, 0;strlen()函数求字符串长度计算方法(sizeof()验证)
先问一个问题:如下字符串or字符数组,用strlen函数求长度各是多少? /*01*/char * str1 = "abc"; /*02*/char * str2 = " ...
- Android5.0,6.0,7.0,8.0新特性整理
背景 Android5.0(Android Lollipop)是谷歌公司2014年10月发布的全新安卓系统,至今已经两年多.然而由于国产手机对安卓ROM的深度定制或修改,以及手机厂商.芯片制造商.运营 ...
最新文章
- LeetCode(7.整数反转)JAVA
- Codeforces Round#434 DIV.2
- js 得到select所有option里的值
- Python 中,字符串连接效率最高的方式是?一定出乎你的意料
- TCPIP / MTU 和 MSS 的区别和联系
- 设计模式:组合模式(Composite)
- 基于TensorFlow开发人脸识别
- Android 图片放大缩小
- mysql按月分列统计_实现mysql按月统计的教程
- php7数据库备份还原,基于thinkphp的数据库在线备份还原
- html5发布原文,HTML5 第二份草案发布
- php 纯文本输出_关于PHP的语法介绍,新手必看
- 【CCCC】L3-020 至多删三个字符 (30分),序列dp+去重
- 永恒之蓝漏洞复现(包括常见问题处理)和修复方案
- 协同办公市场暴增背后:融云通信能力是需求重点
- Web自动化漏洞检测工具:Xray
- java timer暂停_暂停/停止和启动/恢复Java TimerTask?
- 重装win10遇到的坑
- 如何零基础转行成为一个自信的前端达人
- pandas处理excel单元格合并后的列