【安卓】微信可以把联系人直接添加到桌面,为何点击该联系人图标后就会直接进到聊天界面?

如图:

1、打开微信,在联系人界面点击目标联系人:
【安卓】微信可以把联系人直接添加到桌面,为何点击该联系人图标后就会直接进到聊天界面?

2、点击联系人详细资料界面的右上角:
【安卓】微信可以把联系人直接添加到桌面,为何点击该联系人图标后就会直接进到聊天界面?

3、选择菜单最下方“添加到桌面”:
【安卓】微信可以把联系人直接添加到桌面,为何点击该联系人图标后就会直接进到聊天界面?

4、联系人就添加到桌面上了:
【安卓】微信可以把联系人直接添加到桌面,为何点击该联系人图标后就会直接进到聊天界面?

5、点击桌面上的联系人图标,就能直接进入聊天界面:
【安卓】微信可以把联系人直接添加到桌面,为何点击该联系人图标后就会直接进到聊天界面?

**我的问题如下:
问题1:为什么点击这个图标就能直接进入微信聊天界面?(我知道这是个ShortCut ,我更想知道的是这个ShortCut 的Intent传递了何种数据,使得能够直接打开了与微信上指定联系人的对话窗口)
问题2:如何写一段代码,来启动这个“联系人图标”?**

回答

通过广播创建这个快捷图标的,它的官方名称叫:Short Cut。

完成添加图标需要以下几个步骤:

  1. 添加权限 <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />

  2. 执行以下代码

    // 添加桌面图标的 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

回到顶部