我正在尝试使用adb从双卡手机(SIM 0和SIM 1)上的特定SIM卡拨打电话,但我无法弄清楚如何将呼叫定向到该特定的SIM卡插槽。 到目前为止,我已尝试使用以下命令进行调用:
adb shell am start -a android.intent.action.CALL -d tel:XXXXXXXXXX
这很好用,但总是使用SIM 0调用。
我尝试使用radiooptions:
adb shell radiooptions
但事实证明,此特定设备不支持radiooptions。
/system/bin/sh: radiooptions: not found
我确实在其他设备上尝试过,这不是双卡,而放射性检测似乎也适用于此。这就是我首先尝试放射性检测的全部原因,因为它具有非常明确的选择特定SIM卡的实施方式。
无论如何,我发现以下有关双卡手机的问题,但它们不是基于adb的。他们都是Java问题。
Make call using a specified SIM in a Dual SIM Device
他们似乎有所帮助,并提供了一些关于如何做到这一点的线索,尤其是这一点:
这非常接近我的需求,但我不知道如何将其转换为命令提示符友好代码。
方法"意图"在上面的链接中使用的文档在这里:
https://developer.android.com/reference/android/content/Intent.html
Multi sim android官方文档: https://developer.android.com/about/versions/android-5.1.html#multisim
非常感谢任何帮助。
答案 0 :(得分:2)
SIM卡只是一个容器。电话用于向网络注册和拨打电话的实体名称为 SubscriberID 。单个SIM卡可能包含多个 SubscriberID 。
因此,不应该询问如何从其他SIM卡拨打电话,而应该询问如何使用SubscriberID拨打电话,而不是使用默认的 - 是否这个 SubscriberID 存储在相同或另一个SIM卡上,而且几乎不相关。
我不知道是否有办法为单个呼叫指定不同的 SubscriberID 。但是你可以在通话前设置一个新的默认 SubscriberID ,然后再将其恢复。
要查找当前运行的ID值:
adb shell settings put global multi_sim_voice_call <ID>
然后通过UI更改活动订阅服务器并再次运行该命令以获取另一个ID。
在调用之前使用此命令切换到相应的ID:
data
要更改multi_sim_data_call
来电设置,请使用multi_sim_voice_call
代替 a = gets.split(" ").each {|n| n.to_i}
puts "#{a[0] + a[1]}"
。
答案 1 :(得分:0)
命令
adb shell设置将全局multi_sim_voice_call
可以正常工作。
可以从dumpsys telephony.registry
中检索双重SubscriberID:
// Get SIM1 subscriberID
adb shell "dumpsys telephony.registry | grep -o -E 'notifyServiceStateForSubscriber: subId=[0-9]{1,3} phoneId=0 state={mVoiceRegState=[0-1]' | head -n 1 | grep -o -E '[0-9]{1,3}' | head -n 1"
// Get SIM2 subscriberID
adb shell "dumpsys telephony.registry | grep -o -E 'notifyServiceStateForSubscriber: subId=[0-9]{1,3} phoneId=1 state={mVoiceRegState=[0-1]' | head -n 1 | grep -o -E '[0-9]{1,3}' | head -n 1"