一、时区信息获取:
通过网络获取当前时区timezoneid--网页:
二、问题:在开机向导界面搜台时,用户把蓝牙遥控器的电池扣掉,搜台界面会自动退出。
对策:在软件上的搜台所属的activity添加keyboardHidden属性,activity就不会销毁并重新加载。
三、ListView setSelection() 无效:
1、确定该ListView是否获取到了焦点:
list.requestFocus();
list.requestFocusFromTouch();
再setSelection
2、保证ListView已经加载完成,延时一段时间再setSelection
四、自定义View只能接收到设置onTouchListener后只能接收到MotionEvent.ActionDown的Action响应,无法接收到MotionEvent.ActionUp和MotionEvent.ActionMove的Action是因为该View未设置android:clickable="true"。
五、可通过 读取 "/sys/class/net/wlan0/" 下面的相关文件获取到与wifi相关的所有数据 (有线同理:“/sys/class/net/eth0/”)
eg:获取wlan vendor id : /sys/class/net/wlan0/device/idVendor 存储在该文件中,为16进制
获取wlan MAC :sys/class/net/wlan0/address
六、android应用成为系统应用需要在AndroidManifest中添加 --
android:process="system"
android:sharedUserId="android.uid.system"
七、ViewFlipper 调用removeView 后 再 addView,会导致当前的显示子view发生改变----即调用getDisplayedChild()会相应的+1.
八、txt文件乱码问题 --- 将packages/apps/HTMLViewer/src/com/android/htmlviewer/HTMLViewerActivity.java 文件的oncreate方法中添加默认编码为gbk --- s.setDefaultTextEncodingName("GBK");
九、在fragment中调用onOptionsItemSelected时,无效 --在onCreate中 需要设置setHasOptionsMenu(true);
十、onPostCreate回调函数的意义: --- 对view的操作有时候不能放在onresume()中执行,会出现ANR
在android中一个Activity的创建时,界面的绘制是需要时间的,当我们需要执行某个操作时,如果界面复杂,尚未绘制完成,很容易导致anr.那么如何确保在界面绘制完成,这就是此函数的意义所在了.onPostCreat是在界面绘制完成之后相继执行的.
十一、有些广播必须设置相应的DataScheme 才能接收到。
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED);
intentFilter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL);
intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
intentFilter.addAction(Intent.ACTION_MEDIA_REMOVED);
intentFilter.addAction(Intent.ACTION_MEDIA_EJECT);
intentFilter.addDataScheme("file");
IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
filter.addDataScheme("package");
广播指定包名接收,或者指定某个broadcast接收(Android8.0后有些系统广播必须指定包名)
Intent intent = new Intent("com.android.server.tv.TIME_EVENT_LAST_MINUTE_WARN");
//intent.setComponent(new ComponentName("com.mstar.tv.tvplayer.ui","com.mstar.tv.tvplayer.ui.TVBroadcastReceiver")); //指定包名+类名
intent.setPackage("com.mstar.tv.tvplayer.ui"); //指定包名
//intent.setFlags(Intent.FLAG_RECEIVER_FOREGROUND); //设置为前台广播
sendBroadcast(intent);
十二、在刚开机时,由于后台需要初始化很多东西,这个时候发送广播可能会被阻塞掉,导致广播无发被接收到,此时可以将广播设置为前台广播,可以有效的解决广播延时的问题,因为前台广播会被优先处理。
Intent intent = new Intent("android.intent.action.MASTER_CLEAR");
intent.putExtra("from", "restorefactory");
intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); //设置为前台广播
sendBroadcast(intent);
十三、Android自定义开机向导中需要添加相应的属性控制,否则会出现HOME键无效
// Add a persistent setting to allow other apps to know the device
// has been provisioned.
Settings.Global.putInt(getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 1);
Settings.Secure.putInt(getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, 1);
三、Android中key的传递机制