早就想写这个功能了,最近忙一直没时间,今天有空写点关于Android程序跳转至指定的微信好友界面和朋友圈界面
如果微信同步手机通讯后可以进入指定微信好友会话界面和朋友圈界面
程序逻辑点:
通讯录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.主要代码:
public final static String WEIXIN_CHATTING_MIMETYPE = "vnd.android.cursor.item/vnd.com.tencent.mm.chatting.profile";//微信聊天
public final static String WEIXIN_SNS_MIMETYPE = "vnd.android.cursor.item/vnd.com.tencent.mm.plugin.sns.timeline";//微信朋友圈
public final static String WEIXIN_VIDIO_MIMETYPE = "vnd.android.cursor.item/vnd.com.tencent.mm.chatting.voip.video";//微信视频 public final static String WEIXIN_CHATTING_MIMETYPE = "vnd.android.cursor.item/vnd.com.tencent.mm.chatting.profile";//微信聊天
public final static String WEIXIN_SNS_MIMETYPE = "vnd.android.cursor.item/vnd.com.tencent.mm.plugin.sns.timeline";//微信朋友圈
public final static String WEIXIN_VIDIO_MIMETYPE = "vnd.android.cursor.item/vnd.com.tencent.mm.chatting.voip.video";//微信视频
/**
* 进去聊天界面
* @param context
* @param id 手机通讯录中版本的微信的自动增长列(下面有一个方法或告诉大家如何获取)
*/
public static void shareToFriend(Context context,int id) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.withAppendedPath(
ContactsContract.Data.CONTENT_URI, String.valueOf(id)),
WEIXIN_CHATTING_MIMETYPE);
context.startActivity(intent);
}
/**
* 朋友圈
* @param context
* @param id
*/
public static void shareToTimeLine(Context context,int id) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.withAppendedPath(
ContactsContract.Data.CONTENT_URI, String.valueOf(id)),
WEIXIN_SNS_MIMETYPE);
context.startActivity(intent);
}
/** 根据电话号码查询微信id **/
public static int getChattingID(Context context, String querymobile, String mimeType) {
if(context == null || querymobile == null || querymobile.equals("") ){
return 0;
}
ContentResolver resolver = context.getContentResolver();
Uri uri = Uri.parse("content://com.android.contacts/data");
StringBuilder sb = new StringBuilder();
sb.append(Data.MIMETYPE).append(" = ").append("'");
sb.append(mimeType).append("'");
sb.append(" AND ").append("replace(data1,' ','')").append(" = ").append("'").append(ToolClass.getPhone(querymobile)).append("'");
Cursor cursor = resolver.query(uri, new String[] {Data._ID}, sb.toString(), null, null);
while (cursor.moveToNext()) {
int wexin_id = cursor.getInt(cursor.getColumnIndex(Data._ID));
return wexin_id;
}
cursor.close();
return 0;
}
如果大家还有什么疑问可以直接给我留言