- 浏览: 1066337 次
- 性别:
- 来自: 南昌
文章分类
- 全部博客 (276)
- 生活 (1)
- 代码之美 (22)
- Media (7)
- Android Widget (3)
- Android Intent (1)
- Android Activity (4)
- UI event handle--UI事件处理机制 (2)
- Java基础知识 (12)
- android Databases (5)
- Android 系统知识 (70)
- 平常遇到的问题与解决方法 (38)
- Android TextView/EditView (2)
- Thinking Java (1)
- android webkit (6)
- JSON (1)
- XML (4)
- HTTP (1)
- Google Weather API (1)
- android 2.3 NFC (10)
- android app (20)
- android framework (7)
- C++ (2)
- android System (5)
- Pthread (1)
- Wifi (8)
- Unix/Linux C (8)
- Android 4.0 (1)
- Mail (1)
- Smack 源码学习 (4)
- iOS (4)
- Android (1)
- git (1)
- Gallery3d (2)
- React-Natice (1)
最新评论
-
dd18349182956:
你是用的smack哪个版本?我用的smack4.1.3和sma ...
关于socket长连接的心跳包 -
xukaiyin:
全英文
getApplicationContext()与this,getBaseContext() -
裂风矢:
...
<category android:name="android.intent.category.DEFAULT" /> 惹的祸 -
xanthodont:
mark一下
XMPP——Smack -
Evilover3:
mark一下,学习了
XMPP——Smack
转自:http://blog.csdn.net/l_serein/article/details/6287474
尽管Android向下兼容不好,但是一个程序还是可以在多个平台上跑的。向下兼容不好,接口改变,新的平台上不能用旧的API,旧的平台更不可能用新的API,不等于一个平台需要一个APK。可以在高SDK上开发,并在程序中作版本判断,低版本运行环境使用旧的API。
例如要开发一个显示通话记录的程序,需要兼容1.6~2.2,我们知道不同的平台SDK level不同,1.5是3,1.6是4,2.2是8。对应的可以使用android.os.Build进行判断。源代码如下:
转自:http://www.linuxidc.com/Linux/2011-11/48325.htm
尽管Android向下兼容不好,但是一个程序还是可以在多个平台上跑的。向下兼容不好,接口改变,新的平台上不能用旧的API,旧的平台更不可能用新的API,不等于一个平台需要一个APK。可以在高SDK上开发,并在程序中作版本判断,低版本运行环境使用旧的API。
例如要开发一个显示通话记录的程序,需要兼容1.6~2.2,我们知道不同的平台SDK level不同,1.5是3,1.6是4,2.2是8。对应的可以使用android.os.Build进行判断。源代码如下:
if(Build.VERSION.SDK_INT <= 4) { Toast.makeText(this, "version" + Build.VERSION.RELEASE+ " :" + Build.VERSION.SDK_INT, Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "version" + Build.VERSION.RELEASE+ " :" + Build.VERSION.SDK_INT, Toast.LENGTH_SHORT).show(); }
转自:http://www.linuxidc.com/Linux/2011-11/48325.htm
android.os.Build Java代码 Build.BOARD // 主板 Build.BRAND // android系统定制商 Build.CPU_ABI // cpu指令集 Build.DEVICE // 设备参数 Build.DISPLAY // 显示屏参数 Build.FINGERPRINT // 硬件名称 Build.HOST Build.ID // 修订版本列表 Build.MANUFACTURER // 硬件制造商 Build.MODEL // 版本 Build.PRODUCT // 手机制造商 Build.TAGS // 描述build的标签 Build.TIME Build.TYPE // builder类型 Build.USER // 运行结果 /* board: unknown brand: generic cpu abi: armeabi device: generic display: google_sdk-eng 2.1 ERD79 22607 test-keys finger print: generic/google_sdk/generic/:2.1/ERD79/22607:eng/test-keys host: genki.mtv.corp.google.com id: ERD79 manufacturer: unknown model: google_sdk product: google_sdk tags: test-keys time: 1261185425000 type: eng user: android-build */ Build.BOARD // 主板 Build.BRAND // android系统定制商 Build.CPU_ABI // cpu指令集 Build.DEVICE // 设备参数 Build.DISPLAY // 显示屏参数 Build.FINGERPRINT // 硬件名称 Build.HOST Build.ID // 修订版本列表 Build.MANUFACTURER // 硬件制造商 Build.MODEL // 版本 Build.PRODUCT // 手机制造商 Build.TAGS // 描述build的标签 Build.TIME Build.TYPE // builder类型 Build.USER // 运行结果 /* board: unknown brand: generic cpu abi: armeabi device: generic display: google_sdk-eng 2.1 ERD79 22607 test-keys finger print: generic/google_sdk/generic/:2.1/ERD79/22607:eng/test-keys host: genki.mtv.corp.google.com id: ERD79 manufacturer: unknown model: google_sdk product: google_sdk tags: test-keys time: 1261185425000 type: eng user: android-build */ Build.VERSION Java代码 // 当前开发代号 Build.VERSION.CODENAME // 源码控制版本号 Build.VERSION.INCREMENTAL // 版本字符串 Build.VERSION.RELEASE // 版本号 Build.VERSION.SDK // 版本号 Build.VERSION.SDK_INT // 结果 /* REL 22607 2.1 7 7 */ // Build.VERSION.SDK_INT可与switch搭配用 switch (Build.VERSION.SDK_INT) { case Build.VERSION_CODES.BASE: // 1.0 break; case Build.VERSION_CODES.BASE_1_1: // 1.1 break; case Build.VERSION_CODES.CUPCAKE: // 1.5 break; case Build.VERSION_CODES.CUR_DEVELOPMENT: // current dev version break; case Build.VERSION_CODES.DONUT: // 1.6 break; case Build.VERSION_CODES.ECLAIR: // 2.0 break; case Build.VERSION_CODES.ECLAIR_0_1: // 2.0.1 break; case Build.VERSION_CODES.ECLAIR_MR1: // 2.1 break; } // 当前开发代号 Build.VERSION.CODENAME // 源码控制版本号 Build.VERSION.INCREMENTAL // 版本字符串 Build.VERSION.RELEASE // 版本号 Build.VERSION.SDK // 版本号 Build.VERSION.SDK_INT // 结果 /* REL 22607 2.1 7 7 */ // Build.VERSION.SDK_INT可与switch搭配用 switch (Build.VERSION.SDK_INT) { case Build.VERSION_CODES.BASE: // 1.0 break; case Build.VERSION_CODES.BASE_1_1: // 1.1 break; case Build.VERSION_CODES.CUPCAKE: // 1.5 break; case Build.VERSION_CODES.CUR_DEVELOPMENT: // current dev version break; case Build.VERSION_CODES.DONUT: // 1.6 break; case Build.VERSION_CODES.ECLAIR: // 2.0 break; case Build.VERSION_CODES.ECLAIR_0_1: // 2.0.1 break; case Build.VERSION_CODES.ECLAIR_MR1: // 2.1 break; }
发表评论
-
打印调用堆栈
2019-11-15 15:48 489平常我们遇到不清楚代码逻辑的,可以通过打印调用堆栈来理清楚,如 ... -
你知道Log.isLoggable
2018-11-23 14:15 967我们可以通过Log.isLoggable来动态开关log的输出 ... -
android:allowUndo
2018-04-25 16:51 788Android 在Android 23增加了UndoManag ... -
mipmap-xxx
2015-12-10 11:35 1109最近在看AOSP,发现mipmaps, 百度 了一下,发现有各 ... -
《Android.Programming.Pushing.the.Limits].Erik.Hellman》记录1
2015-10-29 10:56 581最近在看《Android.Programming.Pushin ... -
System.currentTimeMillis() uptimeMillis elapsedRealtime 区别
2015-10-28 20:02 1321转自http://blog.csdn.net/wutianyi ... -
GPS的开关设置
2015-09-29 18:36 2040//modify by hyxu 2015-9-30 to s ... -
DialogFragment
2015-09-25 13:56 1056public class YesNoDialog extend ... -
ANDROID L——RecyclerView,CardView导入和使用
2015-07-23 09:51 961转自http://blog.csdn.net/a3969019 ... -
IntentService 和ResultReceiver
2015-07-22 20:00 814转自[url] http://javatechig.com/a ... -
Android media媒体库分析之:分类别统计媒体文件大小
2015-07-21 20:07 554转自http://www.linuxidc.com/Linux ... -
java.lang.IllegalArgumentException: Service Intent must be explicit
2015-07-21 20:03 1308转自:http://www.2cto.com/kf/20150 ... -
Context 和Application Context
2015-02-11 15:14 885http://possiblemobile.com/2013/ ... -
ContentProviderOperation.Builder 中withValue和withValueBackReference的区别
2015-02-10 14:01 2204关于ContentProviderOperation.Buil ... -
AndroidManifest.xml的Service元素 android:process设置
2013-05-30 17:02 11492转自:http://galin.blog.sohu ... -
android中打包含有Activity以及资源文件的jar包在工程中调用
2013-05-28 15:00 1323转自:http://www.cnblogs.com/vaiya ... -
Android杂谈--内存泄露(1)--contentView缓存使用与ListView优化
2012-11-01 09:29 2838转自:http://www.cnblogs.com/louli ... -
Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式
2012-10-31 14:32 1892转自:http://www.eoeandroid.com/th ... -
Animation
2012-10-30 13:41 1138转自:http://hi.baidu.com/wendaoer ... -
Android onTouchEvent和onInterceptTouchEvent
2012-10-24 15:05 1292ViewGroup里的onInterceptTouchEven ...
相关推荐
Build.VERSION.SDK_INT 代表的操作系统的版本号 ,谷歌的解释大致翻译如下 当前在此硬件上运行的软件的SDK版本装置。当设备启动时,此值从不更改,但它可能当硬件制造商提供OTA更新时增加。 常用来判断sdk版本如下 ...
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { requestPermissions(new String[]{Manifest...
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window window = getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); window.addFlags(WindowManager....
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // 设置状态栏颜色 getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); getWindow().setStatusBarColor...
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { String[] permissions = new String[]{Manifest.permission.RECORD_AUDIO,Manifest.permission.WRITE_EXTERNAL_STORAGE}; for (String permission : ...
9. **版本兼容性**:由于Android系统的碎片化,开发者需要考虑不同Android版本之间的兼容性,可能需要使用`Build.VERSION.SDK_INT`进行版本检查,并使用适当的API。 10. **测试**:在真实设备或模拟器上进行测试,...
Android8.0之前 未知应用安装权限默认开启,如下图所示 8.0以下手机未知应用安装权限.png Android8.0之后 未知应用安装权限默认关闭,且权限入口隐藏。...if (Build.VERSION.SDK_INT >= Build.VERSION_COD
有些时候,我们需要知道当前手机上是否显示了NavigationBar,也就是屏幕底部的虚拟按键。... if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { Display display = getWindowManager().
苹果上的UI基本上都是这个效果,然而Android机上的顶部状态栏... if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { // 透明状态栏 getWindow().addFlags( WindowManager.LayoutParams.FLAG_TRANSLUCENT
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = activity.getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window....
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); activity.getWindow().clearFlags...
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { context.startActivity(new Intent("android.settings.APP_NOTIFICATION_SETTINGS") .putExtra("app_package", context.getPackageName())...
if (enabled && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { // 入侵式状态栏 getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_...
if (requestCode == REQUEST_CODE_DRAW_OVERLAY && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (Settings.canDrawOverlays(this)) { // 权限已授予,可以创建悬浮窗 } else { // 用户拒绝了权限,...
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); } } ``` 4. **自定义颜色**:在Android 5.0及更高版本中,你可以...
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.clearFlags...
3. SDK版本:`Build.VERSION.SDK_INT` 获取当前SDK版本号,用于判断兼容性问题。 4. 制造商:`Build.MANUFACTURER` 返回设备制造商,如“Samsung”。 除了`Build`类,还可以通过其他方式获取更深入的系统参数: 1....
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { // 设置状态栏透明 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); // 设置导航栏透明 getWindow().addFlags...
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); activity.getWindow().clearFlags(Window.FLAG...
int sdkVersion = Build.VERSION.SDK_INT; ``` 这个值可以用于条件判断,比如检查设备是否支持特定API级别的特性。 3. **获取系统版本名称** 获取用户可见的Android系统版本名称,如"Android 10",可以使用以下...