适配Android6.0的两点总结

作者: Sealwk | 来源:发表于2017-08-10 14:23 被阅读54次

    前言

    今天在适配Android6.0时遇到两个问题,比较典型,总结下来,以备后用 -- 好脑子不如烂笔头!

    问题一

    关于使用Intent进行Service跳转时,需要指定包名,即你想要在哪个应用下启动Service。

    Intent intent = new Intent();
    intent.setPackage("com.XXX.XXX");
    startService(intent);
    

    括号里面需要填写启动Service的应用包名。
    注意,启动活动的时候不需要,只有在启动Service的时候才需要setPackage。

    问题二

    描述

    如果你的app/build.gradle文件中targetSdkVersion >= 23,那么在创建通知时,AS将会提示setLatestEventInfo方法找不到了。如下所示:

    111.png

    那么进入到Notification.java会发现,setLatestEventInfo方法已经被打上了弃用的标志,而且官方建议使用Builder代替。如下所示:

    222.png

    解决

    解决过程比较艰辛,并不像想象中的顺利,一开始我选择的是使用 Notification.Builder(),相信大多数人也是这么选择的,但是在写完后,发现builder.setPriority等属性不能使用,并且运行报错。通过Google,修改成了NotificationCompat.Builder()方法,问题得到解决!代码如下:

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
    
                builder.setWhen(notification.when)
                        .setSmallIcon(notification.icon)
                        .setPriority(notification.priority)
                        .setTicker(notification.tickerText)
                        .setNumber(notification.number)
                        .setColor(notification.color)
                        .setSound(notification.sound, notification.audioStreamType)
                        .setDefaults(notification.defaults)
                        .setVibrate(notification.vibrate)
                        .setDeleteIntent(notification.deleteIntent);
    
                // now apply the latestEventInfo fields
                if (title != null) {
                    builder.setContentTitle(title);
                }
                if (message != null) {
                    builder.setContentText(message);
                }
                builder.setContentIntent(contentIntent);   
                notificationManager.notify(random.nextInt(), builder.build());
    

    参考

    http://blog.csdn.net/liyx2018/article/details/51332158
    https://stackoverflow.com/questions/32450449/setlatesteventinfo-cannot-be-resolved
    http://www.houfukude.tk/2013/05/23/Notification%E4%BD%BF%E7%94%A8%E8%AE%B0%E5%BD%95

    相关文章

      网友评论

        本文标题:适配Android6.0的两点总结

        本文链接:https://www.haomeiwen.com/subject/rqjhrxtx.html