android - 如何从 Android 应用程序 [新版本] 开始 Viber 通话?

标签 android viber

前一段时间我创建了this帖子,我和我的同事找到了两个不同的答案(都有效):

  1. 第一个解决方案是使用

    Intent callIntent = new Intent (“android.intent.action.CALL_PRIVILEGED”);

    这将打开一个新窗口,提供所有人都可以调用的电话 调用电话的可能方式 - 在这种特殊情况下,他们是 Dialer、Viber 和 Skype(或后来添加的任何其他方法)。

  2. 第二个解决方案是明确调用 Viber 并放置一个电话 也可以调用电话

    Intent viberCallIntent = new Intent("com.viber.voip.action.CALL"); viberCallIntent.setType("vnd.android.cursor.item/vnd.com.viber.voip.call"); viberCallIntent.setData(Uri.parse("tel:"+ dialNumber)); viberCallIntent.putExtra("external_call", true); viberCallIntent.putExtra("contact_id", -1L); 开始 Activity (viberCallIntent);

自上次 Viber 更新(我们昨天注意到)以来,这些方法都不起作用。第一个只是使用 Skype 调用,甚至不提供拨号器(!?!),但如果未安装 Skype,则它将退回到拨号器并调用电话。第二个崩溃声称没有找到处理 Intent 的 Activity ?

知道发生了什么以及如何解决这个问题吗?

错误日志如下:

01-27 17:35:03.794: E/AndroidRuntime(7738): FATAL EXCEPTION: main
01-27 17:35:03.794: E/AndroidRuntime(7738): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.viber.voip dat=tel:xxxxxxxxx (has extras) }
01-27 17:35:03.794: E/AndroidRuntime(7738):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1628)
01-27 17:35:03.794: E/AndroidRuntime(7738):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1423)
01-27 17:35:03.794: E/AndroidRuntime(7738):     at android.app.Activity.startActivityForResult(Activity.java:3388)
01-27 17:35:03.794: E/AndroidRuntime(7738):     at android.app.Activity.startActivityForResult(Activity.java:3349)
01-27 17:35:03.794: E/AndroidRuntime(7738):     at android.app.Activity.startActivity(Activity.java:3584)
01-27 17:35:03.794: E/AndroidRuntime(7738):     at android.app.Activity.startActivity(Activity.java:3552)
01-27 17:35:03.794: E/AndroidRuntime(7738):     at rs.limitline.maxitaxins.MainActivity.callViber(MainActivity.java:96)
01-27 17:35:03.794: E/AndroidRuntime(7738):     at rs.limitline.maxitaxins.MainActivity.onClick(MainActivity.java:186)
01-27 17:35:03.794: E/AndroidRuntime(7738):     at android.view.View.performClick(View.java:4212)
01-27 17:35:03.794: E/AndroidRuntime(7738):     at android.view.View$PerformClick.run(View.java:17476)
01-27 17:35:03.794: E/AndroidRuntime(7738):     at android.os.Handler.handleCallback(Handler.java:800)
01-27 17:35:03.794: E/AndroidRuntime(7738):     at android.os.Handler.dispatchMessage(Handler.java:100)
01-27 17:35:03.794: E/AndroidRuntime(7738):     at android.os.Looper.loop(Looper.java:194)
01-27 17:35:03.794: E/AndroidRuntime(7738):     at android.app.ActivityThread.main(ActivityThread.java:5431)
01-27 17:35:03.794: E/AndroidRuntime(7738):     at java.lang.reflect.Method.invokeNative(Native Method)
01-27 17:35:03.794: E/AndroidRuntime(7738):     at java.lang.reflect.Method.invoke(Method.java:525)
01-27 17:35:03.794: E/AndroidRuntime(7738):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
01-27 17:35:03.794: E/AndroidRuntime(7738):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
01-27 17:35:03.794: E/AndroidRuntime(7738):     at dalvik.system.NativeStart.main(Native Method)

[更新] 这也显示为错误:

01-27 19:46:56.704: D/Greska(19822): Permission Denial: starting Intent { act=com.viber.voip.action.CALL dat=tel:xxxxxxxxx cmp=com.viber.voip/com.viber.service.OutgoingCallBroadcaster (has extras) } from ProcessRecord{416c41b8 19822:rs.limitline.maxitaxins/u0a10065} (pid=19822, uid=10065) not exported from uid 10147

最佳答案

根据 Viber 的 list ,有 Activity “com.viber.voip.phone.PhoneActivity”负责操作“com.viber.voip.action.CALL”。在新版本的 Viber (4.2.1.1) 中,此 Activity 由 android:exported="false" 标记。因此,无法再从外部应用程序启动此 Activity ...

编辑

此代码打开指定联系人的欢迎屏幕

String sphone = "12345678";
Uri uri = Uri.parse("tel:" + Uri.encode(sphone)); 
Intent intent = new Intent("android.intent.action.VIEW");
intent.setClassName("com.viber.voip", "com.viber.voip.WelcomeActivity");
intent.setData(uri); 
context.startActivity(intent);

但用户应该点击“免费通话”按钮开始通话。

关于android - 如何从 Android 应用程序 [新版本] 开始 Viber 通话?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21387355/

相关文章:

Android 模拟器无法按预期工作

android - Viber 分享按钮在 Android 中抛出异常

android - SwitchCompat 在 RecyclerView 中给出空指针异常

java - 如何让android程序等待两个按钮被按下?

android - 所有 gms/firebase 库必须使用完全相同的版本(混合版本会导致运行时崩溃)。找到版本 16.1.1 16.0.1 16.0.0 15.0.1

android - Kotlin 安卓编译

api - Viber REST API,如何找到唯一的 Viber 用户 ID?

viber - 为什么我在 Viber 聊天 API 上有用户名订阅者?

android - 如何从 Android 应用程序打开 Viber 公共(public)聊天

python - 从 Viber 机器人向订阅用户发送消息