如何使用电话号码直接发送消息来打开特定Viber联系人的聊天活动?

时间:2020-06-18 05:49:24

标签: android android-intent viber

例如,我有一个电话号码和一个名为“与联系人聊天”的按钮。单击按钮时,我的应用程序应打开Viber活动,该活动代表基于电话号码的特定Viber联系人聊天窗口。我有类似的东西,但是 startActivity()方法抛出 ActivityNotFoundException

        val intent = Intent(Intent.ACTION_SENDTO).apply {
            `package` = "com.viber.voip"
            data = Uri.parse("sms:$phoneNumber")
            putExtra("address", phoneNumber)
        }
        startActivity(intent)

我知道Viber以前曾提供过该操作,但此操作可能已在3或4年前隐藏在清单文件中。现在有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我刚刚分析了 Viber 的清单并看到了:

<intent-filter>
    <action
        android:name="android.intent.action.SEND" />
    <category
        android:name="android.intent.category.DEFAULT" />
    <data
        android:scheme="smsto" />
    <data
        android:scheme="sms" />
</intent-filter>

看起来 Viber 使用方案 Intent.ACTION_SENDsms: 处理 smsto:

尝试像这样更改您的代码:

        val intent = Intent(Intent.ACTION_SEND).apply {
            `package` = "com.viber.voip"
            data = Uri.parse("sms:$phoneNumber")
        }
        startActivity(intent)
相关问题