Android 我如何检查我是否可以打外线电话?
通过手机支持的任何方法,即GSM或CDMA而非SIP。我尝试过使用ConnectionManager,但是TYPE_MOBILE的NetworkInfo似乎返回了!连接到wifi时断开连接,尽管我的信号已满 我想知道是否可以拨打电话,因此我猜TelephonyManager.getDataState不合适 我的回答 再过7个小时就不能发布了 看来我在正确的地方,只是没有完全检查正确的方法。事实上,似乎只有一种类型的连接,即类型移动、类型WIFI将返回未连接,因此我应该检查连接是否可用。我在启用和禁用移动数据的情况下对此进行了测试,在这两种情况下都给出了正确的结果,即:当我有移动信号时为true,当我没有移动信号时为false;无论是否启用移动数据Android 我如何检查我是否可以打外线电话?,android,Android,通过手机支持的任何方法,即GSM或CDMA而非SIP。我尝试过使用ConnectionManager,但是TYPE_MOBILE的NetworkInfo似乎返回了!连接到wifi时断开连接,尽管我的信号已满 我想知道是否可以拨打电话,因此我猜TelephonyManager.getDataState不合适 我的回答 再过7个小时就不能发布了 看来我在正确的地方,只是没有完全检查正确的方法。事实上,似乎只有一种类型的连接,即类型移动、类型WIFI将返回未连接,因此我应该检查连接是否可用。我在启用和
注意:要禁用移动数据,请在ICS goto Settings->Wireless&Network->More->mobile Network->data Enabled中取消选中它。首先检查PackageManager是否具有系统功能PackageManager.FEATURE\u TELEPHONY,然后
您可以使用TelephonyManager getSimState您应该创建一个BroadcastReceiver: on case TelephonyManager.CALL_STATE_OFFHOOK:检查以前的状态是CALL_STATE_RINGING还是CALL_STATE_IDLE,例如在这两种情况下设置不同的标志。 在后一种情况下,继续打开应用程序:
public class CallReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
TelephonyManager.EXTRA_STATE_RINGING)) {
// Phone number
// Ringing state
// This code will execute when the phone has an incoming call
} else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
TelephonyManager.EXTRA_STATE_IDLE)
|| intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
TelephonyManager.EXTRA_STATE_OFFHOOK)) {
// This code will execute when the call is answered or disconnected
}
}
}
您应该注册您的应用程序以侦听清单中的这些意图:
<receiver android:name=".CallReciever">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
我想知道是否可以打电话,而不是电话是否正在进行中。应该有一种简单的方法来获取此信息,而无需亲自监控状态,并且有,请参见我的答案。SimState={SIM_STATE_缺席,SIM_STATE_网络锁定,SIM_STATE_PIN_需要,SIM_STATE_PUK_需要,SIM_STATE_就绪,SIM_STATE_未知。对不起,我讨厌按enter键发送评论且不添加线路。我想说的是,如果我有移动信号,这些都不会告诉我。