今天整理个不是问题的问题,没学到啥,主要完成功能:
老大要求能调用手机号码然后通过微信聊,
我去,说白了老大看到了应用-通讯录plus-的微信功能,要我模仿。
首先,坑啊,我以为是开放的功能,就去看了半天微信的开发分享功能,记录下分享功能的使用:
1.去下载微信开放平台的包: 微信提供了 开发的工具包sdk ,里面有个 libammsdk.jar.将它导入工程
2.去微信开放平台申请你的 APP_ID ,做过其他开放平台的都应该知道这玩意。
3.在工程建立静态变量APP_ID:
public static final String APP_ID = "wx----------------";
4.主要使用IWXAPI 接口,它提供了注册应用,交互的基本功能方法:
IWXAPI api = WXAPIFactory.createWXAPI(context, APP_ID);//获取iWXAPI的实现,需要你自己的 APP_ID api.registerApp(APP_ID);//注册自己的应用id
5.进行简单文本信息的分享传送:
WXTextObject textobj = new WXTextObject(" ");//必须有长度,为0不可以,代表分享的文本 WXMediaMessage message = new WXMediaMessage();//传送 request里面的对象,用来包装 真实的数据 message.description = textmsg; message.title = textmsg; message.mediaObject = textobj;//赋值为刚才的文本对象 SendMessageToWX.Req request = new SendMessageToWX.Req();//分享给wx的类 request.transaction = textmsg;//代表一次会话的唯一id request.scene = SendMessageToWX.Req.WXSceneSession;//代表场景, sdk文档有写 timeline 是朋友圈, session是会话 request.message = message; boolean flag = api.sendReq(request); System.out.println("do send... weixin to "+textmsg+" : "+flag);
这样就完成了分享,微信提供的sdk使用demo已经非常详细了
其次是调用微信:
我使用了下通讯录plus,它一定要在android账户中添加微信账户以及微信账户必须设置手机绑定为当前手机,
所以是不是联系人数据库中的account_name 和 account_type表明了谁是本机微信好友
所以
1.在添加微信账户后查询account_name,发现有了新的account_name:xxxx(你的微信登入名字)
而account_type = com.tencent.mm.account
2.查询这个account_type所属的号码,这些号码果然是我的微信好友
3.怎么调用,观察通讯录plus的调用intent 我们就知道答案了,包括了数据(由contact.data+dataid)和类型就是下面的type=“vnd.android.cursor.item/vnd.com.tencent.mm.chatting.profile”后面的字符:
4.我们只要模仿这个intent就可以了调用代码:
Intent intent = new Intent(Intent.ACTION_VIEW); SimplePhone sp = (SimplePhone) mAdpater.getItem(position); intent.setDataAndType(Uri.withAppendedPath(ContactsContract.Data.CONTENT_URI, String.valueOf(sp.dataid)), WX_MIMETYPE); startActivity(intent);
这样就完成了到达微信界面,和指定的号码聊天
最后。这个功能是山寨不是开放的,完全不靠谱,如果type类型变化或者微信关了这个那就完蛋了