Android各版本适配需要注意的地方(积累中)

Android 8.0  

①通知栏适配


Android各版本适配需要注意的地方(积累中)_第1张图片
图一

②角标功能


值得高兴的是,从8.0系统开始,Google制定了Android系统上的角标规范,也提供了标准的API,长期让开发者头疼的这个问题现在终于可以得到解决了。

那么下面我们就来学习一下如何在Android系统上实现未读角标的效果。修改MainActivity中的代码,如下所示:

public classMainActivityextendsAppCompatActivity{

   ...


   @TargetApi(Build.VERSION_CODES.O)

   privatevoidcreateNotificationChannel(String channelId, String channelName,intimportance){

       NotificationChannel channel = new NotificationChannel(channelId, channelName, importance);

       channel.setShowBadge(true);

       NotificationManager notificationManager = (NotificationManager) getSystemService(

               NOTIFICATION_SERVICE);

       notificationManager.createNotificationChannel(channel);

   }


   publicvoidsendSubscribeMsg(View view){

       NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

       Notification notification = new NotificationCompat.Builder(this, "subscribe")

               ...

               .setNumber(2)

               .build();

       manager.notify(2, notification);

   }


}

可以看到,这里我们主要修改了两个地方。第一是在创建通知渠道的时候,调用了NotificationChannel的setShowBadge(true)方法,表示允许这个渠道下的通知显示角标。第二是在创建通知的时候,调用了setNumber()方法,并传入未读消息的数量。

现在重新运行一下程序,并点击发送订阅消息按钮,然后在Launcher中找到NotificationTest这个应用程序,如下图所示:


Android各版本适配需要注意的地方(积累中)_第2张图片
图二

③摘抄自http://mp.weixin.qq.com/s/Ez-G_9hzUCOjU8rRnsW8SA

Android 7.0

Android7.0调用相机时出现新的错误:

android.os.FileUriExposedException: file:///storage/emulated/0/photo.jpeg exposed beyond app through ClipData.Item.getUri()

解决办法:

在Application的onCreat()方法中添加以下代码:

// android 7.0系统解决拍照的问题

StrictMode.VmPolicy.Builder builder =newStrictMode.VmPolicy.Builder();        

StrictMode.setVmPolicy(builder.build());        

builder.detectFileUriExposure();

你可能感兴趣的:(Android各版本适配需要注意的地方(积累中))