`
kevinlynx
  • 浏览: 82822 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论
文章列表
经过简单的google/baidu后,发现android没有现成的API去拒接电话。android可以通过注册BroadcastReceiver截取短信,因为这个broadcast是一个ordered broadcast,所以只要优先级比短信接收程序高,就可以提前终止掉这个broadcast receiver。 但是,电话呼入则没有类似的机制。不过,综合网上的一些资料,通过以下大体的步骤,则可以实现拒接电话: 1、注册broadcast receiver,监视手机状态: <receiver android:name=".PhoneBroadcastRece ...
这里并不打算对整个短信源码进行分析,完全是看了某部分代码后的自我总结。我从GIT上clone了Conversation(即短信程序)的所有源码,结果编译不过。不过这对分析它的源码并不造成太大的阻碍。 这里主要对短信主界面的数据和UI的交互角度进行分析,因为我自己写的短信程序在加入获取联系人头像功能后,程序启动时花费的查询时间太长。虽然我也觉得系统默认的短信程序,甚至HandcentSMS,启动时间都不是很快。(大概是我的机器性能太差) 一、代码结构 Conversation中整体结构主要包括com.android.mms.data和com.android.mms.ui,如名字所示,大概就是 ...
Android中content provider提供了一种进程间共享数据的机制。Conetent provider以类似数据库表的机制提供与外部交互的方法。content provider的实现并不对存储形式做要求,可以是数据库、文件、或者网络。要自己编写一个content provider需要注意的事项包括(from official reference): 1、派生ContentProvider类,实现若干个接口,主要包括:onCreate/query/update/delete/insert/getType; 2、定义好一系列的URI,URI用于指示访问的具体数据,一般可以配合UriM ...
Android中的短信并没有正式的content provider可用,在官方文档中没有提供定义。不过依然可以自己定义好URI,然后查询出短信内容。例如conetent://sms则是所有短信所在的path。 要将短信按会话分类,原先我是查询出所有短信后,然后再按照thread_id分类。系统自带的短信程序包含一个会话显示界面,每个条目包含:联系人、短信数量、第一条短信等内容。当我的程序处理的短信较多时,一次查询出所有的短信就变得很慢。(如果再加上为每个会话查询联系人信息,则会更慢) 看了系统短信的代码,发现它可以只查询出会话的信息,而不用查询出所有短信内容。因为部分代码没找到,一直不知道它 ...
当一个ListView的item为一个RelativeLayout时,该ViewGroup下的子view如果配置为        android:layout_alignParentBottom="true",本来是让子view靠近RelativeLayout的底部,但实际运行结果却是靠到顶部。 据说这是个BUG,关于这个BUG的进一步描述可以在这里看到:Issue 1394 在昨天关于QuickContactBadge嵌入ListView item的例子中,就可以发现这个问题。上面那个网页也有人给出了解决方案。 即: 1、指定RelativeLayout的具体高度, ...
android默认短信程序主界面主要是一个ListView,每个Item上有一个QuickContactBadge(这里提到过])。这个可以通过定制ListView使用的adapter来实现。 查了些ListView自己写adapter的资料,发现问题很多。主要集中于item带有事件响应,或者状态保存,例如Button、CheckBox,之类的控件时,将很难协调。 事实上,虽然QuickContactBadge也带有事件响应,但是集成到ListView的item里,相对而言简单很多。 ListView的Item配置: <?xml version="1.0" ...
题目所说的快捷操作对话框在android的很多地方都有,例如点击短信条目中联系人头像,就会弹出三个操作选项:电话、查看、短信。要实现这样的操作,主要是通过QuickContactBadge这个view。 关于这个类的使用,网上资料很少。开始我走了一个弯路,以为这个类是负责那个对话框的。其实不是,这个类只是一个普通的图片view,点击它就会弹出这里所说的对话框。 所以,只需要在我们的界面上加入这个view,然后在代码里设置其属性即可: <QuickContactBadge android:id="@+id/photo" ...
考虑到SD卡可能没有被mount,或者其他各种情况,操作SD卡上的文件总需要各种状态的判断。主要是使用Environment类里的一些接口进行判断: private void writeFileToSD() { String sdStatus = Environment.getExternalStorageState(); if(!sdStatus.equals(Environment.MEDIA_MOUNTED)) { Log.d("TestFile", "SD card is not avaiable/write ...
Android中Activity和进程的生命周期是一个很重要的问题。Android对进程也采取了垃圾回收之类的机制,这意味着即使用户退出了程序,该进程依然可能存在于系统中。这将直接影响我们写的程序结构。 一个进程可能有若干个Activity。Activity退出后,进程可能并没有结束。下次用户从桌面启动该Activity时,会直接使用没有结束的进程。所以,想直接在主Activity中做程序初始化之类的操作,则需要小心。(实际上,Activity没有主次之分,说它是“主”,主要是因为它接受ndroid.intent.action.MAIN action) 如下代码: package c ...
既上次的测试,通过取得短信里的person字段,然后通过person字段从联系人表里取出联系人信息,总是存在问题: 1、如果短信是在建立联系人信息之前收到的,person字段依然是0; 2、在我的真机上即使person不为0,Cursor::moveToFirst依然失败,导致获取不出联系人信息。 今天无意看到分代码SMS Backup,看到里面获取联系人信息的代码: private PersonRecord lookupPerson(String address) { if (!mPeopleCache.containsKey(address)) { ...
读取短信本身没什么难度,仅仅是读取SQLite数据库而已。 public Uri SMS_INBOX = Uri.parse("content://sms/inbox"); private void fillListView() { ListView view = (ListView) findViewById(R.id.sms_list); ArrayList<HashMap<String, String>> list = ...
之前在t.sina.com.cn/kevinlynx陆续贴了些android开发涉及到的一些code snippets,主要目的是记录,供以后需要的时候查阅方便。但是因为miniblog的字数限制,在记录较多信息的时候还是有诸多不便。so, i'm here. Tab view算是我接触android平台第二个比较迷惑的地方(第一个是ListView的adapter)。在百度了一些别人的使用心得/总结后,依然发现对tab view的使用存在很多疑问。包括ApiDemo里的例子以及其他一些例子代码。就目前而言我依然存在部分疑点,不过,就单纯的使用而言,倒是足够了。 Tab view通过TabH ...
Global site tag (gtag.js) - Google Analytics