<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/feedsky2.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/jackyear" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/jackyear" type="application/rss+xml"></fs:self_link><lastBuildDate>Fri, 01 Jul 2011 17:21:55 GMT</lastBuildDate><title>微笑     </title><description>java,linux,live</description><link>http://jackyear.is-programmer.com/</link><item><title>android 从SMS获取联系人信息</title><link>http://jackyear.is-programmer.com/posts/27740.html</link><wfw:commentRss>http://jackyear.is-programmer.com/posts/27740.rss</wfw:commentRss><description>&lt;p&gt;
	&lt;font face=&quot;Verdana&quot;&gt;　在SMS数据库中person这个值得到的有人说就是联系人的ID但是实际上这个值是不稳定的,这里要得到联系人信息需要通过address获得的发件人电话号码和&lt;strong&gt;&lt;span style=&quot;font-size:16px;&quot;&gt;&lt;font color=&quot;#5f497a&quot;&gt;ContactsContract.PhoneLookup.CONTENT_FILTER_URI&lt;/font&gt;&lt;/span&gt;&lt;/strong&gt;来实现.代码如下&lt;/font&gt;&lt;/p&gt;
&lt;pre class=&quot;brush: java; first-line: 1; collapse: true&quot;&gt;
ContactItem getContactByAddr(Context context, final SMSItem sms) { 
    Uri personUri = Uri.withAppendedPath( 
            ContactsContract.PhoneLookup.CONTENT_FILTER_URI, sms.mAddress); 
    Cursor cur = context.getContentResolver().query(personUri, 
            new String[] { PhoneLookup.DISPLAY_NAME }, 
            null, null, null ); 
    if( cur.moveToFirst() ) { 
        int nameIdx = cur.getColumnIndex(PhoneLookup.DISPLAY_NAME); 
        ContactItem item = new ContactItem(); 
        item.mName = cur.getString(nameIdx); 
       cur.close(); 
       return item; 
   } 
   return null; 
}&lt;/pre&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/530277922/jackyear/feedsky/s.gif?r=http://jackyear.is-programmer.com/posts/27740.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Programme</category><pubDate>Sat, 02 Jul 2011 01:21:55 +0800</pubDate><author>Thomas</author><guid isPermaLink="false">http://jackyear.is-programmer.com/posts/27740</guid><dc:creator>Thomas</dc:creator><fs:srclink>http://jackyear.is-programmer.com/posts/27740.html</fs:srclink><fs:srcfeed>http://jackyear.is-programmer.com/posts.rss</fs:srcfeed><fs:itemid>feedsky/jackyear/~7508912/530277922/5617864</fs:itemid></item><item><title>android 中管理短信</title><link>http://jackyear.is-programmer.com/posts/27736.html</link><wfw:commentRss>http://jackyear.is-programmer.com/posts/27736.rss</wfw:commentRss><description>&lt;p&gt;
	不能直接访问数据库，只能通过协议来访问数据库了，&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	先贴出相关的协议：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	content://sms/inbox&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 收件箱&lt;br /&gt;
	content://sms/sent&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 已发送&lt;br /&gt;
	content://sms/draft&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 草稿&lt;br /&gt;
	content://sms/outbox&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 发件箱&lt;br /&gt;
	content://sms/failed&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 发送失败&lt;br /&gt;
	content://sms/queued&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 待发送列表&lt;/p&gt;
&lt;p&gt;
	在模拟器上Outbox没有查询到数据，在模拟器上找了老半天也没找到发件箱，很郁闷。&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	数据库中sms相关的字段如下：&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	_id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 一个自增字段，从1开始&lt;br /&gt;
	thread_id&amp;nbsp;&amp;nbsp;&amp;nbsp; 序号，同一发信人的id相同&lt;br /&gt;
	address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 发件人手机号码&lt;br /&gt;
	person&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 联系人列表里的序号，陌生人为null &lt;font color=&quot;#ff0000&quot;&gt;(不稳定无法获取联系人ID)&lt;/font&gt;&lt;br /&gt;
	date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 发件日期&lt;br /&gt;
	protocol&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 协议，分为： 0 SMS_RPOTO, 1 MMS_PROTO&amp;nbsp;&lt;br /&gt;
	read&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 是否阅读 0未读， 1已读&amp;nbsp;&lt;br /&gt;
	status&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 状态 -1接收，0 complete, 64 pending, 128 failed&lt;br /&gt;
	type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; ALL&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; INBOX&amp;nbsp; = 1;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; SENT&amp;nbsp;&amp;nbsp; = 2;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; DRAFT&amp;nbsp; = 3;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; OUTBOX = 4;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; FAILED = 5;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; QUEUED = 6;&lt;br /&gt;
	body&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 短信内容&lt;br /&gt;
	service_center&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 短信服务中心号码编号&lt;br /&gt;
	subject&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 短信的主题&lt;br /&gt;
	reply_path_present&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TP-Reply-Path&lt;br /&gt;
	locked&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	检索数据方法很简单：&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	Uri uri = Uri.parse(&amp;quot;content://sms/inbox&amp;quot;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	Cursor cur = this.managedQuery(uri, null, null, null, null);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	if (cur.moveToFirst()) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; do{&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int j = 0; j &amp;lt; cur.getColumnCount(); j++){&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info = &amp;quot;name:&amp;quot; + cur.getColumnName(j) + &amp;quot;=&amp;quot; + cur.getString(j);&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.i(&amp;quot;====&amp;gt;&amp;quot;, info);&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; }while(cur.moveToNext());&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	}&lt;/p&gt;
&lt;p&gt;
	managedQuery最终也要将参数转换为SQL语句向SQLite发送消息，因此参数跟SQL语句很类似，所以可以在查询字段中加入SQL函数，&lt;/p&gt;
&lt;p&gt;
	比如new String[] projection = new String[]{&amp;quot;count(*) as count&amp;quot;}等等。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	managedQuery中的参数依次为uri，&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	查询字段&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 查询字段数组，也可以将所有需要查询的字段放入一个字符内&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 比如new projection[]{&amp;quot;_id&amp;quot;, &amp;quot;thread_id&amp;quot;}和new projection[]{&amp;quot;_id,thread_id&amp;quot;}是一致的。&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 跟SQL一样，字段名不区分大小写&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	条件&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 不带Where的SQL 条件字符，如果有参数则用？替代，比如&amp;quot;_id=? And thread_id = ? Or type = &amp;#39;1&amp;#39;&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	条件中的参数&amp;nbsp;&amp;nbsp; 参数字符数组，跟上述的条件一一对应&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	排序&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 不带Order by排序字符串，比如_id desc, type&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	如果参数为null，SQL中查询字段为&amp;ldquo;*&amp;rdquo;，相关的条件为空白&lt;/p&gt;
&lt;p&gt;
	还可以用getContentResolver（）获得一个ContentResolver，&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	getContentResolver().query（）同样返回一个Cursor对象，参数跟managedQuery一致。&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	不过用ContentResolver对象去更新、删除和插入一条数据时报SecurityException。看来没有权限，在Manifest.xml中加入权限：&lt;br /&gt;
	&amp;lt;uses-permission android:name=&amp;quot;android.permission.WRITE_SMS&amp;quot;&amp;gt;&amp;lt;/uses-permission&amp;gt;&lt;br /&gt;
	然后删除短信：&lt;br /&gt;
	this.getContentResolver().delete(Uri.parse(&amp;quot;content://sms&amp;quot;), &amp;quot;_id=?&amp;quot;, new String[]{&amp;quot;3&amp;quot;});&lt;br /&gt;
	删除成功。&lt;/p&gt;
&lt;p&gt;
	&lt;br /&gt;
	--------------------------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;
	Url中content://sms 替换成content://sms/ 也成功，但是其它url时程序报错，比如content://sms/inbox&lt;/p&gt;
&lt;p&gt;
	看了一下android的源代码，sms支持的协议有：&lt;/p&gt;
&lt;p&gt;
	&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, null, SMS_ALL);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;#&amp;quot;, SMS_ALL_ID);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;inbox&amp;quot;, SMS_INBOX);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;inbox/#&amp;quot;, SMS_INBOX_ID);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;sent&amp;quot;, SMS_SENT);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;sent/#&amp;quot;, SMS_SENT_ID);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;draft&amp;quot;, SMS_DRAFT);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;draft/#&amp;quot;, SMS_DRAFT_ID);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;outbox&amp;quot;, SMS_OUTBOX);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;outbox/#&amp;quot;, SMS_OUTBOX_ID);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;undelivered&amp;quot;, SMS_UNDELIVERED);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;failed&amp;quot;, SMS_FAILED);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;failed/#&amp;quot;, SMS_FAILED_ID);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;queued&amp;quot;, SMS_QUEUED);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;conversations&amp;quot;, SMS_CONVERSATIONS);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;conversations/*&amp;quot;, SMS_CONVERSATIONS_ID);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;raw&amp;quot;, SMS_RAW_MESSAGE);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;attachments&amp;quot;, SMS_ATTACHMENT);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;attachments/#&amp;quot;, SMS_ATTACHMENT_ID);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;threadID&amp;quot;, SMS_NEW_THREAD_ID);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;threadID/*&amp;quot;, SMS_QUERY_THREAD_ID);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;status/#&amp;quot;, SMS_STATUS_ID);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;sr_pending&amp;quot;, SMS_STATUS_PENDING);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;sim&amp;quot;, SMS_ALL_SIM);&lt;br /&gt;
	sURLMatcher.addURI(&amp;quot;sms&amp;quot;, &amp;quot;sim/#&amp;quot;, SMS_SIM);&lt;/p&gt;
&lt;p&gt;
	&lt;br /&gt;
	--------------------------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;
	其中，delete方法中支持的协议为：&lt;/p&gt;
&lt;p&gt;
	SMS_ALL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 根据参数中的条件删除sms表数据&lt;br /&gt;
	SMS_ALL_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 根据_id删除sms表数据&lt;br /&gt;
	SMS_CONVERSATIONS_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 根据thread_id删除sms表数据，可以带其它条件&lt;br /&gt;
	SMS_RAW_MESSAGE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 根据参数中的条件删除 raw表&lt;br /&gt;
	SMS_STATUS_PENDING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 根据参数中的条件删除 sr_pending表&lt;br /&gt;
	SMS_SIM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 从Sim卡上删除数据&lt;/p&gt;
&lt;p&gt;
	&lt;br /&gt;
	试一下SMS_CONVERSATIONS_ID：&amp;quot;&lt;br /&gt;
	在eclipse中的Emulator Control中，以13800给模拟器发送三条数据，然后以13900发送一条&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	this.getContentResolver().delete(Uri.parse(&amp;quot;content://sms/conversations/3&amp;quot;), &amp;quot;_id=?&amp;quot;, new String[]{&amp;quot;5&amp;quot;});&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	成功删除一条数据。&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	在数据库中每个发送者的thread_id虽然一样，但不是固定的，如果把一个发送者的全部数据删除掉，&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	然后换一个新号码发送短信时，thread_id是以数据库中最大的id+1赋值的。&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	&lt;br /&gt;
	--------------------------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;
	update支持的协议有很多：&lt;/p&gt;
&lt;p&gt;
	SMS_RAW_MESSAGE&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_STATUS_PENDING&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_ALL&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_FAILED&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_QUEUED&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_INBOX&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_SENT&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_DRAFT&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_OUTBOX&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_CONVERSATIONS&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_ALL_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_INBOX_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_FAILED_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_SENT_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_DRAFT_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_OUTBOX_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_CONVERSATIONS_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_STATUS_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	&lt;br /&gt;
	以SMS_INBOX_ID测试一下：&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	ContentValues cv = new ContentValues();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	cv.put(&amp;quot;thread_id&amp;quot;, &amp;quot;2&amp;quot;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	cv.put(&amp;quot;address&amp;quot;, &amp;quot;00000&amp;quot;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	cv.put(&amp;quot;person&amp;quot;, &amp;quot;11&amp;quot;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	cv.put(&amp;quot;date&amp;quot;, &amp;quot;11111111&amp;quot;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	this.getContentResolver().update(Uri.parse(&amp;quot;content://sms/inbox/4&amp;quot;), cv, null, null);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	太强了，连thread_id都可以修改。&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	&lt;br /&gt;
	--------------------------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;
	insert支持的协议：&lt;/p&gt;
&lt;p&gt;
	SMS_ALL&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_INBOX&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_FAILED&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_QUEUED&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_SENT&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_DRAFT&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_OUTBOX&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_RAW_MESSAGE&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_STATUS_PENDING&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_ATTACHMENT&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_NEW_THREAD_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	&lt;br /&gt;
	向sms表插入数据时，type是根据协议来自动设置，&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	如果传入的数据中没有设置date时，自动设置为当前系统时间；非SMS_INBOX协议时，read标志设置为1&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	SMS_INBOX协议时，系统会自动查询并设置PERSON&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	threadId为null或者0时，系统也会自动设置&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	&lt;br /&gt;
	一直为造不了&amp;quot;发送失败&amp;quot;的邮件而发愁，现在来做一个：&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	content://sms/failed&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	&lt;br /&gt;
	ContentValues cv = new ContentValues();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	cv.put(&amp;quot;_id&amp;quot;, &amp;quot;99&amp;quot;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	cv.put(&amp;quot;thread_id&amp;quot;, &amp;quot;0&amp;quot;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	cv.put(&amp;quot;address&amp;quot;, &amp;quot;9999&amp;quot;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	cv.put(&amp;quot;person&amp;quot;, &amp;quot;888&amp;quot;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	cv.put(&amp;quot;date&amp;quot;, &amp;quot;9999&amp;quot;);&lt;br /&gt;
	cv.put(&amp;quot;protocol&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
	cv.put(&amp;quot;read&amp;quot;, &amp;quot;1&amp;quot;);&lt;br /&gt;
	cv.put(&amp;quot;status&amp;quot;, &amp;quot;-1&amp;quot;);&lt;br /&gt;
	//cv.put(&amp;quot;type&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
	cv.put(&amp;quot;body&amp;quot;, &amp;quot;@@@@@@@@@&amp;quot;);&lt;/p&gt;
&lt;p&gt;
	this.getContentResolver().insert(Uri.parse(&amp;quot;content://sms/failed&amp;quot;), cv);&lt;br /&gt;
	type被设置成了5，thread_id设置为1&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	--------------------------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;
	&lt;br /&gt;
	系统连最起码的数据校验都没有做啊，google对程序员也太仁慈了。&lt;/p&gt;
&lt;p&gt;
	看看能不能再挖掘一下sms的功能。先来做一个错误的查询：&lt;/p&gt;
&lt;p&gt;
	getContentResolver().query( Uri.parse(&amp;quot;content://sms/&amp;quot;) , new String[]{&amp;quot;a&amp;quot;}, &amp;quot;b&amp;quot;, null, null);&lt;/p&gt;
&lt;p&gt;
	log输出错误的SQL语句：&lt;/p&gt;
&lt;p&gt;
	SELECT a FROM sms WHERE (b) ORDER BY date DESC&lt;/p&gt;
&lt;p&gt;
	query方法中没有Group by，如果想对短信做统计，对Cursor进行遍历再统计也太慢了。&lt;/p&gt;
&lt;p&gt;
	在SQL语言中group by在Where后面，那就在条件参数中想想办法：&lt;/p&gt;
&lt;p&gt;
	Android组织SQL语句时将条件两端加（），那就拼一个group by出来吧：&lt;/p&gt;
&lt;p&gt;
	getContentResolver().query( Uri.parse(&amp;quot;content://sms/&amp;quot;) , new String[]{&amp;quot;count(*) as count, thread_id&amp;quot;}, &amp;quot;1=1） group by (thread_id&amp;quot;, null, null);&lt;/p&gt;
&lt;p&gt;
	那么输出的SQL= SELECT count(*) as count, thread_id FROM sms WHERE ( 1=1） group by (thread_id ) ORDER BY date DESC&lt;/p&gt;
&lt;p&gt;
	如果想查询URI没有对应的表怎么办呢，比如想知道 mmssms.db数据库中有哪些表，&lt;/p&gt;
&lt;p&gt;
	查询的表是URI定的，再在条件参数中拼凑肯定是不行。&lt;/p&gt;
&lt;p&gt;
	那我们把目光往前移，看看在字段参数中能不能凑出来。&lt;/p&gt;
&lt;p&gt;
	要查询其它表，关键要去掉系统固定添加的FROM sms，&lt;/p&gt;
&lt;p&gt;
	用用SQL中的注释吧，&lt;/p&gt;
&lt;p&gt;
	getContentResolver().query(Uri.parse(&amp;quot;content://sms/&amp;quot;), new String[]{&amp;quot; * from sqlite_master WHERE type = &amp;#39;table&amp;#39;&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	那么输出的SQL=SELECT * from sqlite_master WHERE type = &amp;#39;table&amp;#39; -- FROM sms ORDER BY date DESC&lt;/p&gt;
&lt;p&gt;
	居然能够运行。&lt;/p&gt;
&lt;p&gt;
	得寸进尺，再进一步，如果加入&amp;ldquo;；&amp;rdquo;也能运行的话，哈哈，那么建表、删除表、更新表也能为所欲为咯。&lt;/p&gt;
&lt;p&gt;
	getContentResolver().query(Uri.parse(&amp;quot;content://sms/&amp;quot;), new String[]{&amp;quot; * from sms;select * from thrreads;&lt;/p&gt;
&lt;p&gt;
	很可惜，只运行了第一条SQL语句，看来在关键问题上，android还是有所控制的。&lt;/p&gt;
&lt;p&gt;
	不过支持--也很不错了，这样可以查询数据库中所有的表，而且还可以多表联查&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/530277923/jackyear/feedsky/s.gif?r=http://jackyear.is-programmer.com/posts/27736.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Programme</category><pubDate>Sat, 02 Jul 2011 01:18:22 +0800</pubDate><author>Thomas</author><guid isPermaLink="false">http://jackyear.is-programmer.com/posts/27736</guid><dc:creator>Thomas</dc:creator><fs:srclink>http://jackyear.is-programmer.com/posts/27736.html</fs:srclink><fs:srcfeed>http://jackyear.is-programmer.com/posts.rss</fs:srcfeed><fs:itemid>feedsky/jackyear/~7508912/530277923/5617864</fs:itemid></item><item><title>Android学习手札(一)</title><link>http://jackyear.is-programmer.com/posts/21223.html</link><wfw:commentRss>http://jackyear.is-programmer.com/posts/21223.rss</wfw:commentRss><description>&lt;p&gt;&lt;p&gt;
	&amp;nbsp;&amp;nbsp; 好久没有动动blog了,一方面是懒,二方面是一直也没有什么新鲜的东西可以写,最近不知道怎么了,便有了危机感,有了危机感就要在危机来到之前将其化解,要不然就的坐以待毙,为此考虑开始研究android了.说实在的这个东西,现在高出像样的玩意的貌似已经有不少了,现在弄或许晚了,但是我个人觉得还是不晚,现在最多是个初级阶段而已,折腾了好半天连下载SDK带配置环境,总算是弄完了.感觉那个模拟器好慢啊....很多人都知道google指定的IDE是eclipse,而且相关的文章不计其数,从1.5版本开始配置到2.2版本的配置样样都有,可唯独没有见几个netbeans的配置,(顺便说下netbeans越用越顺手,我说的是sun的那个,oracle的6.9.1没感觉有啥变化,仅仅是多了个虚拟终端,现在我已经么有linux了也用不到了=.=)下面说说我的netbeans的配置吧,也许有跟我一样喜欢netbeans而没有找到android环境搭建的朋友呢.&lt;/p&gt;
&lt;p&gt;
	&lt;/p&gt;
&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/530277924/jackyear/feedsky/s.gif?r=http://jackyear.is-programmer.com/posts/21223.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Programme</category><pubDate>Sat, 11 Sep 2010 07:55:57 +0800</pubDate><author>Thomas</author><guid isPermaLink="false">http://jackyear.is-programmer.com/posts/21223</guid><dc:creator>Thomas</dc:creator><fs:srclink>http://jackyear.is-programmer.com/posts/21223.html</fs:srclink><fs:srcfeed>http://jackyear.is-programmer.com/posts.rss</fs:srcfeed><fs:itemid>feedsky/jackyear/~7508912/530277924/5617864</fs:itemid></item><item><title>一个23设计模式的搞笑解释</title><link>http://jackyear.is-programmer.com/posts/19025.html</link><wfw:commentRss>http://jackyear.is-programmer.com/posts/19025.rss</wfw:commentRss><description>&lt;p&gt;&lt;div class=&quot;blog_content&quot;&gt;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 23种设计模式，是前辈们智慧的结晶，但是很多时候向我这样的新手总是有些难以理解的，偶然发现一个搞笑版本的设计模式解释，虽然搞笑，但确实是设计模式的定义，不妨用这种方式来尝试理解，也许应用的时候会好很多。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/530277925/jackyear/feedsky/s.gif?r=http://jackyear.is-programmer.com/posts/19025.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Programme</category><pubDate>Fri, 25 Jun 2010 20:54:13 +0800</pubDate><author>Thomas</author><guid isPermaLink="false">http://jackyear.is-programmer.com/posts/19025</guid><dc:creator>Thomas</dc:creator><fs:srclink>http://jackyear.is-programmer.com/posts/19025.html</fs:srclink><fs:srcfeed>http://jackyear.is-programmer.com/posts.rss</fs:srcfeed><fs:itemid>feedsky/jackyear/~7508912/530277925/5617864</fs:itemid></item><item><title>尴尬的俚语</title><link>http://jackyear.is-programmer.com/posts/17717.html</link><wfw:commentRss>http://jackyear.is-programmer.com/posts/17717.rss</wfw:commentRss><description>&lt;p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 英语俚语，对于我来说简直就是一件尴尬的事情，因为，无论从字面还是从抽象都得不到正确的意思，当然中文也有让老外尴尬的俚语。但是我是中国人，而且这样的环境导致我必须知道一些英语，多少是些无奈，收集到一些俚语挺好的。&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: rgb(153, 204, 0);&quot;&gt;文章来源：&lt;/span&gt;&lt;a href=&quot;http://jackyear.is-programmer.com/&quot;&gt;&lt;span style=&quot;color: rgb(153, 204, 0);&quot;&gt;微笑&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/530277926/jackyear/feedsky/s.gif?r=http://jackyear.is-programmer.com/posts/17717.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Live</category><pubDate>Mon, 03 May 2010 18:05:23 +0800</pubDate><author>Thomas</author><guid isPermaLink="false">http://jackyear.is-programmer.com/posts/17717</guid><dc:creator>Thomas</dc:creator><fs:srclink>http://jackyear.is-programmer.com/posts/17717.html</fs:srclink><fs:srcfeed>http://jackyear.is-programmer.com/posts.rss</fs:srcfeed><fs:itemid>feedsky/jackyear/~7508912/530277926/5617864</fs:itemid></item><item><title>挣钱靠的是能力</title><link>http://jackyear.is-programmer.com/posts/17716.html</link><wfw:commentRss>http://jackyear.is-programmer.com/posts/17716.rss</wfw:commentRss><description>&lt;p&gt;&lt;p&gt;&lt;img align=&quot;right&quot; width=&quot;100&quot; height=&quot;100&quot; alt=&quot;&quot; src=&quot;/user_files/jackyear/Image/live.png&quot; /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 已经不知道是从那里看到的文章了，所以是在没有办法把文章来源贴出来。但是看完之后还是有些感触的。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/530277927/jackyear/feedsky/s.gif?r=http://jackyear.is-programmer.com/posts/17716.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Live</category><pubDate>Mon, 03 May 2010 17:51:23 +0800</pubDate><author>Thomas</author><guid isPermaLink="false">http://jackyear.is-programmer.com/posts/17716</guid><dc:creator>Thomas</dc:creator><fs:srclink>http://jackyear.is-programmer.com/posts/17716.html</fs:srclink><fs:srcfeed>http://jackyear.is-programmer.com/posts.rss</fs:srcfeed><fs:itemid>feedsky/jackyear/~7508912/530277927/5617864</fs:itemid></item><item><title>对vim配置的修正</title><link>http://jackyear.is-programmer.com/posts/17305.html</link><wfw:commentRss>http://jackyear.is-programmer.com/posts/17305.rss</wfw:commentRss><description>&lt;p&gt;&lt;img align=&quot;right&quot; width=&quot;100&quot; height=&quot;100&quot; alt=&quot;&quot; src=&quot;/user_files/jackyear/Image/logo-Ubuntu.png&quot; /&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 之前我对我的vim的配置进行了重新修改，但是今天我用他来编译C++的时候发现一个问题，这个问题使我很郁闷，具体情况就是之前的那个配置在对c文件和c++文件进行编译的时候会错误的调用编译器，我已经对他进行了修正，而且修改了配色方案，关于配色方案我就不这在里放置了，大家根据需求自行选择就好了，其他的修改在配置文件顶部都有说明，插件均可在&lt;/span&gt;&lt;a href=&quot;http://www.vim.org&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;官方&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;下载到。具体配置请大家移步到&lt;/span&gt;&lt;a href=&quot;http://jackyear.is-programmer.com/posts/16690.html&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;此处&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;color: rgb(153, 153, 153);&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;文章来源：&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;../../../../&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153);&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;微笑&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/530277928/jackyear/feedsky/s.gif?r=http://jackyear.is-programmer.com/posts/17305.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Linux</category><pubDate>Tue, 20 Apr 2010 09:17:25 +0800</pubDate><author>Thomas</author><guid isPermaLink="false">http://jackyear.is-programmer.com/posts/17305</guid><dc:creator>Thomas</dc:creator><fs:srclink>http://jackyear.is-programmer.com/posts/17305.html</fs:srclink><fs:srcfeed>http://jackyear.is-programmer.com/posts.rss</fs:srcfeed><fs:itemid>feedsky/jackyear/~7508912/530277928/5617864</fs:itemid></item><item><title>VIM配置一个</title><link>http://jackyear.is-programmer.com/posts/16690.html</link><wfw:commentRss>http://jackyear.is-programmer.com/posts/16690.rss</wfw:commentRss><description>&lt;p&gt;&lt;p&gt;&lt;img align=&quot;right&quot; width=&quot;100&quot; height=&quot;103&quot; alt=&quot;&quot; src=&quot;/user_files/jackyear/Image/logo-Ubuntu.png&quot; /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 用VIM这个超级编辑器的时间应该是从去年开始的，大概记得是因为gedit在某些方面实在无法满足我的需求，但是一直认为vim过于繁琐于是就从未尝试过，后来发现scite用了一段时间感觉还不错，而且配置起来也不是很麻烦，但是时间长了还是发现scite一样不是我想要的那种编辑器，当时又很有意思的看到一篇emacs和vim的文章于是便动了邪念，把Emacs和VIM都装上了，结果vim的小巧直接让我将Emacs打入了冷宫，客观的来说Emacs也是很不错的。后来总是想见识下这个神用的编辑器（Emacs）到底如何，google了一下发现那个配置有点麻烦，向我这样的懒人就放弃了一睹其真风采的想法。于是很专一的在web上寻找vim的配置，也算是配置了个七七八八，能满足需求了，但是心理总是不爽，因为第一次的配置基本是什么都不明白装了一堆的plugin，也许是受到firefox的影响总感觉vim变的很慢，便想重新配置一次VIM但是懒散的我却始终没能拿出勇气，但是因一次不可逆的误操作，使我不得不从新配置他，配置完成了，插件基本用的不多，感觉清爽了很多，心理也不那么别扭了，正好贴出来就当是一个备份好了，有喜欢的朋友也可以拿去进行修改，让他成为你手边的一个编辑利器。&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: rgb(153, 204, 0);&quot;&gt;文章来源：&lt;/span&gt;&lt;a href=&quot;http://jackyear.is-programmer.com&quot;&gt;&lt;span style=&quot;color: rgb(153, 204, 0);&quot;&gt;微笑&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/530277929/jackyear/feedsky/s.gif?r=http://jackyear.is-programmer.com/posts/16690.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Linux</category><pubDate>Fri, 09 Apr 2010 17:09:55 +0800</pubDate><author>Thomas</author><guid isPermaLink="false">http://jackyear.is-programmer.com/posts/16690</guid><dc:creator>Thomas</dc:creator><fs:srclink>http://jackyear.is-programmer.com/posts/16690.html</fs:srclink><fs:srcfeed>http://jackyear.is-programmer.com/posts.rss</fs:srcfeed><fs:itemid>feedsky/jackyear/~7508912/530277929/5617864</fs:itemid></item><item><title>关于ubuntu10.04</title><link>http://jackyear.is-programmer.com/posts/16333.html</link><wfw:commentRss>http://jackyear.is-programmer.com/posts/16333.rss</wfw:commentRss><description>&lt;p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;我还是没能坚持住，在ubuntu10.04bata1的时候对我的系统进行了升级，在某些情况来看这次的升降还是值得的。那么10.04个我们带来了什么呢？&lt;img width=&quot;100&quot; height=&quot;103&quot; align=&quot;right&quot; alt=&quot;&quot; src=&quot;/user_files/jackyear/Image/logo-Ubuntu.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;也许这需要大量的截图才能真正让我们知道，但是写这篇文章的时候我正好在Windows下玩游戏，这篇文章也是一时兴起来写的。那就靠我的回忆来说说这个清醒的猞猁给我们带来的惊喜吧。&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: rgb(153, 204, 0); &quot;&gt;文章来源：&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 204, 0); &quot;&gt;&lt;a href=&quot;http://jackyear.is-programmer.com/&quot;&gt;微笑&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/530277930/jackyear/feedsky/s.gif?r=http://jackyear.is-programmer.com/posts/16333.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Linux</category><pubDate>Fri, 26 Mar 2010 11:54:57 +0800</pubDate><author>Thomas</author><guid isPermaLink="false">http://jackyear.is-programmer.com/posts/16333</guid><dc:creator>Thomas</dc:creator><fs:srclink>http://jackyear.is-programmer.com/posts/16333.html</fs:srclink><fs:srcfeed>http://jackyear.is-programmer.com/posts.rss</fs:srcfeed><fs:itemid>feedsky/jackyear/~7508912/530277930/5617864</fs:itemid></item><item><title>记那对住在我隔壁储藏室的大学刚毕业的小夫妻</title><link>http://jackyear.is-programmer.com/posts/16113.html</link><wfw:commentRss>http://jackyear.is-programmer.com/posts/16113.rss</wfw:commentRss><description>&lt;p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;人们总是如此，当你生活不让人家的时候你便会怨天尤人，然而你却从来不知道你的生活也是别人羡慕的资本&amp;mdash;&amp;mdash;还有很多不如你的人在比你更悲惨的世界中举步维艰的前行着，也许你曾经看过无数这样的人，也许你也曾同情怜悯过他们，但是你却从来都没有想过：原来我的生活也是如此的美好。&lt;/p&gt;
&lt;p&gt;PS.今天很偶然的看到一篇这样的文章，虽然已经临睡，但是这篇文章却让我辗转反侧难以入眠。于是决定把他留下来。&lt;/p&gt;
&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/530277931/jackyear/feedsky/s.gif?r=http://jackyear.is-programmer.com/posts/16113.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Live</category><pubDate>Wed, 17 Mar 2010 09:57:15 +0800</pubDate><author>Thomas</author><guid isPermaLink="false">http://jackyear.is-programmer.com/posts/16113</guid><dc:creator>Thomas</dc:creator><fs:srclink>http://jackyear.is-programmer.com/posts/16113.html</fs:srclink><fs:srcfeed>http://jackyear.is-programmer.com/posts.rss</fs:srcfeed><fs:itemid>feedsky/jackyear/~7508912/530277931/5617864</fs:itemid></item></channel></rss>
