很多互联网公司,都努力抢占互联网的用户入口,从PC的操作系统Ghost(番茄花园、深度),到PC的浏览器入口(hao123),到PC的桌面程序入口(360安全卫士),再到移动平台的刷机程序(shendu、shuame),这些地方,都陆续成为他们的目标。 在手机上,不管各种刷机程序如何精简软件,都剪不掉通讯录这个程序。如果,在通讯录中,展示当前用户Instant Messenger即时通讯工具中好友的在线状况呢?如果你想给别人打电话,在通讯录里找这个人,找到之后,发下下面有个QQ或者WeChat微信在线的图标,如果事情不紧急的话,你会选择通过QQ语音通话吗?
这得从我去年年底,今年年初买的一部手机说起。
在2012年底,我换了一部Android手机Google Nexus 4,这是我的第一步智能手机,我打算在它上面,做一些移动应用上的尝试。但不知道该做什么样的功能,无意中,看到通讯录中联系人的列表里,如果对方gtalk在线的话,会直接展示出来,而且,还会同步个性签名,这太棒了。
Google Talk在国内,不是很流行,用户基数也少。在国内最流行的,莫过于腾讯的QQ了,以及手机专用的IM --WeChat微信,我也是腾讯的重度老用户。试想着,也把QQ联系人状态显示在通讯录里,一目了然,方便用户,也扩大了腾讯的魔爪。
程序上来说,我初次写android应用,java也已经5、6年没碰过,当初也只是会写个hello world。现在做起来,实在难。还好有google 官方手册,各大开源社区上也有现成的开源项目,照葫芦画瓢,勉强能跑起来。实现IM状态更新到通讯录这比较简单,但获取当前登录QQ、以及登录QQ的联系人在线情况,签名信息这极为困难。腾讯没有提供相应接口。我也不敢逆向手机QQ源码,来获取相应信息,哪怕敢了,也要花费大量精力。哪怕做成了,还是给腾讯做嫁衣。
String imWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; String[] imWhereParams = new String[]{id,ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE}; Cursor imCur = cr.query(ContactsContract.Data.CONTENT_URI,null, imWhere, imWhereParams, null); if (imCur.moveToFirst()) { do{ String imName = imCur.getString(imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.DATA)); int imProtocol = imCur.getInt(imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.PROTOCOL)); int imDATA_ID = imCur.getInt(imCur.getColumnIndex(ContactsContract.Data._ID)); String imLabel = imCur.getString(imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.LABEL)); switch(imProtocol) { case PROTOCOL_QQ: System.out.println(imDATA_ID); final ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); ops.add(ContentProviderOperation.newInsert(ContactsContract.StatusUpdates.CONTENT_URI) .withValue(ContactsContract.StatusUpdates.DATA_ID, imDATA_ID) // ...... .build()); try { System.out.println("QQ QQ "+id+" " + imProtocol+" -- "+imName + "==="+imLabel); getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); } catch (final RemoteException e) { Log.e(TAG, "im type", e); } catch (final OperationApplicationException e) { Log.e(TAG, "im type", e); } System.out.println("QQ " + imProtocol+" -- "+imName + "==="+imLabel); break; case PROTOCOL_MSN: break; case PROTOCOL_GOOGLE_TALK: break; default: } } while(imCur.moveToNext()); } imCur.close();
这么一说,我的第一个移动应用,就这么OVER了。
抛开个人因素,单说这个创意,我认为,是令人震惊的…
如果你想给别人打电话,在通讯录里找这个人,找到之后,发下下面有个QQ在线的图标,如果事情不紧急的话,你会选择通过QQ语音通话吗?
(微信没有在线状态一说)
打开对方信息详情页:
如果你输入了号码, 通话界面,直接提醒你 QQ、WeChat在线,可以通过其免费语音通话,那你选择吗?(紧急事情除外)
当用户选择使用QQ、微信图标时,即(在电话接通之前)挂断电话,直接弹出对应的语音通话面板,开始通话。(如果电话接通,则隐藏图标选择界面。)
腾讯,你还等什么……
如果这样做了,那得劫持多少用户改用QQ啊? 移动、网通恨死IM了。 其实,移动,联通你们也可以的,但你们舍得么?敢吗?有勇气么?有胆识么?以后你们终究会从一张SIM电话卡沦落为移动的上网卡。
可能有人说,用户很少会在通讯录里填上对方的QQ号码,一般只会存个手机号,其他信息都会再输入了。但那是非智能手机的时候,填写联系人信息不方便的做法。现在可以在电脑上输入,云端同步到手机中。实在不行,腾讯不是有手机管家的通讯录管理功能么?腾讯自己就很容易帮用户关联好了吧?
上面提到,紧急事情可以不选择QQ、微信进行语音通话,但以后大家都喜欢这种通话方式,那么电话卡失去打电话功能,只能留下网络支持的功能了,那么移动电话卡变成移动网卡。
PS:就连Photoshop,老衲也用的很流畅,PS的界面也很惊艳,老衲不尽欣赏起自己一番。
CFC4N的博客 由 CFC4N 创作,采用 署名—非商业性使用—相同方式共享 4.0 进行许可。基于https://www.cnxct.com上的作品创作。转载请注明转自:手机通讯录,或许可以增加QQ、微信之类IM用户黏度
#手机通讯录,或许可以增加QQ、微信之类IM用户黏度# – 在2012年底,我换了一部Android手机Google Nexus 4,这是我的第一步智能手机,我打算在… http://t.cn/zYo1Dkk
牛逼。
这是你写的?[吃惊]我要抄送给小马哥。。
不明觉厉
凤飞飞
有道理,skype那种通话应用直接走流量。
非常不错啊。移动互联的整合是核心,而以整合为题的app确实不太多。