sdk兼容性总结---随时更新补充

1、FragmentActivity和Activity

引用:
FragmentActivity和Activity的区别 - - 博客频道 - CSDN.NET
http://blog.csdn.net/shineflowers/article/details/50561176

Fragment是Android 3.0以后的东西,为了在低版本中使用Fragment就要用到android-support-v4.jar兼容包,而FragmentActivity就是这个兼容包里面的,它提供了操作Fragment的一些方法,其功能跟3.0及以后的版本的Activity的功能一样。

下面是API中的原话:
FragmentActivity is a special activity provided in the Support Library to handle fragments on system versions older than API level 11. If the lowest system version you support is API level 11 or higher, then you can use a regular Activity.

主要区别如下:

1、FragmentActivity 继承自Activity,用来解决Android 3.0之前无法使用Fragment的问题,所以在使用的时候需要导入android-support-v4.jar兼容包,同时继承 FragmentActivity,这样在Activity中就能嵌入Fragment来实现你想要的布局效果。

2、当然Android 3.0之后你就可以直接继承自Activity,并且在其中嵌入使用Fragment。

3、获得FragmentManager的方式也不同

Android 3.0以下:getSupportFragmentManager()

Android 3.0以上:getFragmentManager()

2、onKeyDown和onBackPressed

引用:
Android中OnkeyDown事件和OnBackPressed方法区别、兼容、使用 - u010717419的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/u010717419/article/details/24481537

  在Android平台上捕获Back键的事件,Back键是手机上的后退键,一般的软件不捕获相关信息可能导致你的程序被切换到后台,而回到桌面的尴尬情况,在android上有两种方法来获取该按钮的事件。

  1.直接获取按钮按下事件,此方法兼容Android 1.0到Android 2.1 也是常规方法,直接重写Activity的onKeyDown方法即可,代码如下:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同时没有重复
       Toast.makeText(ml78.this,"返回键Back键测试",1).show();
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

而对于Android 2.0开始又多出了一种新的方法,对于Activity 可以单独获取Back键的按下事件,直接重写onBackPressed方法即可,代码如下

@Override
public void onBackPressed() {
// 这里处理逻辑代码,大家注意:该方法仅适用于2.0或更新版的sdk
return;
}

3、关于获取wifi列表的权限判断

获取系统的wifi列表比较麻烦,不但涉及到你的sdk的targetVersion还和手机的系统版本有关系。

图示:

1、当targetVersion < 23的时候不需要任何权限就可以拿到系统的wifi列表
2、当targetVersion >= 23的时候需要做三个判断

1>android 6.0以上只需要定位权限

2>android 6.0需要定位权限和GPS权限(官方设计问题,在6.0.1得到修复)

3>android 6.0以下不需要任何权限

注意:
1、如果你是6.0以上的手机,如果targetVersion<23也需要相应的权限才可以获取系统的wifi列表

2、为什么获取系统的wifi列表需要定位权限呢?设计如此,原因未知。

3、在某些机型上,即使是6.0的手机不需要gps权限也能正常获取wifi列表,这是因为厂家的rom自己修复了谷歌官方6.0版本的问题。

下面是一张判断流程图(thks yj)

wifi

4、关于透明状态栏5.0以上和5.0以下的兼容

在 setContentView();前加入以下代码。

    <color name="status_bar_color">#00000000</color>
    int color = getResources().getColor(R.color.status_bar_color);
    if (color != Color.TRANSPARENT) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = this.getWindow();
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            window.setStatusBarColor(color);
        }
    } else {
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    }      
    setContentView(R.layout.activity_share_manager);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值