Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我如何检查我是否可以打外线电话?_Android - Fatal编程技术网

Android 我如何检查我是否可以打外线电话?

Android 我如何检查我是否可以打外线电话?,android,Android,通过手机支持的任何方法,即GSM或CDMA而非SIP。我尝试过使用ConnectionManager,但是TYPE_MOBILE的NetworkInfo似乎返回了!连接到wifi时断开连接,尽管我的信号已满 我想知道是否可以拨打电话,因此我猜TelephonyManager.getDataState不合适 我的回答 再过7个小时就不能发布了 看来我在正确的地方,只是没有完全检查正确的方法。事实上,似乎只有一种类型的连接,即类型移动、类型WIFI将返回未连接,因此我应该检查连接是否可用。我在启用和

通过手机支持的任何方法,即GSM或CDMA而非SIP。我尝试过使用ConnectionManager,但是TYPE_MOBILE的NetworkInfo似乎返回了!连接到wifi时断开连接,尽管我的信号已满

我想知道是否可以拨打电话,因此我猜TelephonyManager.getDataState不合适

我的回答 再过7个小时就不能发布了

看来我在正确的地方,只是没有完全检查正确的方法。事实上,似乎只有一种类型的连接,即类型移动、类型WIFI将返回未连接,因此我应该检查连接是否可用。我在启用和禁用移动数据的情况下对此进行了测试,在这两种情况下都给出了正确的结果,即:当我有移动信号时为true,当我没有移动信号时为false;无论是否启用移动数据


注意:要禁用移动数据,请在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键发送评论且不添加线路。我想说的是,如果我有移动信号,这些都不会告诉我。