【安卓】微信可以把联系人直接添加到桌面,为何点击该联系人图标后就会直接进到聊天界面?
如图:
1、打开微信,在联系人界面点击目标联系人:
2、点击联系人详细资料界面的右上角:
3、选择菜单最下方“添加到桌面”:
4、联系人就添加到桌面上了:
5、点击桌面上的联系人图标,就能直接进入聊天界面:
**我的问题如下:
问题1:为什么点击这个图标就能直接进入微信聊天界面?(我知道这是个ShortCut ,我更想知道的是这个ShortCut 的Intent传递了何种数据,使得能够直接打开了与微信上指定联系人的对话窗口)
问题2:如何写一段代码,来启动这个“联系人图标”?**
回答
通过广播创建这个快捷图标的,它的官方名称叫:Short Cut。
完成添加图标需要以下几个步骤:
添加权限
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
执行以下代码
// 添加桌面图标的 intent
Intent intent = new Intent();
intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
// 指定桌面图标 label
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "example");
// 指定图标
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
// 指定桌面图标打开后动作的 intent
Intent value = new Intent();
value.setAction("android.intent.action.home");
value.addCategory("android.intent.category.DEFAULT");
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, value);
// 发送广播
sendBroadcast(intent);
其中通过设置 Intent.EXTRA_SHORTCUT_INTENT 的值为一个 Intent,接下来的事情和使用 intent 跳转某个界面是一样的了,所以可以直接进入聊天界面。
需要跳转到对应的会话,则需要通过查询联系人的 ContentProvider 来获取联系人的 ID,然后通过Intent 跳转:
public final static String WEIXIN_CHATTING_MIMETYPE = "vnd.android.cursor.item/vnd.com.tencent.mm.chatting.profile";//微信聊天public static void shareToFriend(Context context,String id) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.withAppendedPath(
ContactsContract.Data.CONTENT_URI, id),
WEIXIN_CHATTING_MIMETYPE);
context.startActivity(intent);
}
相同的方式一样可以进入联系人的朋友圈、进行视频聊天等动作。因为联系人的 contactId 是必要参数,所以一般是在通讯录相关的 App 上才会用到(我也是前司曾开发一个通讯录 App 了解到的)
不要想了,微信的快捷方式都是有token验证的,你建立的打不开
正解。就是楼上的思路
楼上正解。
以上是 【安卓】微信可以把联系人直接添加到桌面,为何点击该联系人图标后就会直接进到聊天界面? 的全部内容, 来源链接: utcz.com/a/102799.html