Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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_Broadcastreceiver - Fatal编程技术网

Android-广播接收器,用于检测手机何时刚刚连接到电视塔?

Android-广播接收器,用于检测手机何时刚刚连接到电视塔?,android,broadcastreceiver,Android,Broadcastreceiver,我需要检测GSM电话何时刚刚连接到网络(从cell tower not available到cell tower connected)。为此,我设置了广播接收器 飞机模式(关闭)和启动完成,当这两个模式被触发时,我将循环一段时间,直到检测到网络。但除此之外,手机可能位于 手机发射塔根本不可用 如何检测这种情况?您可以使用设置了意向过滤器的BroadcastReceiver,用于“android.net.conn.CONNECTIVITY\u CHANGE” 如果第二个If检查为true,则表示没

我需要检测GSM电话何时刚刚连接到网络(从cell tower not available到cell tower connected)。为此,我设置了广播接收器 飞机模式(关闭)和启动完成,当这两个模式被触发时,我将循环一段时间,直到检测到网络。但除此之外,手机可能位于

手机发射塔根本不可用


如何检测这种情况?

您可以使用设置了意向过滤器的BroadcastReceiver,用于“android.net.conn.CONNECTIVITY\u CHANGE”


如果第二个If检查为true,则表示没有网络连接,因此接收器退出。下次连接发生更改时,接收器将再次激活并再次运行此检查。一旦通过检查,我就开始做我所做的任何事情。

在飞行模式下的emulator上,连接更改似乎起作用,但在我的设备上,它只在3G网络状态更改时启动。现在我不得不接受服务状态的改变,它因为在飞机模式和突然失去塔台之间切换而被解雇。对于重新启动,我使用BOOT_COMPLETED.

在接收器操作列表中找不到CONNECTIVITY_CHANGE选项。我正在使用GB 2.3.3。我还检查了API级别16。“android.net.conn.CONNECTIVITY\u CHANGE”不会出现在清单文件中接收器操作的常规下拉列表中。但在我使用它时,它似乎起作用。有没有什么地方可以让我得到所有动作的列表,如果可能的话,还有它们的描述。医生们似乎没有一个分类列表,我也不太喜欢他们的解释。在模拟器上,当手机关机,飞机模式打开/关闭时,广播接收器就会启动。但在我的设备上,运行GB的三星Galaxy S只有在我启用/禁用3G(即数据网络更改)时才会触发。此接收器仅在数据网络连接更改时才会触发。我不确定是否有一个能改变手机网络。当我有时间的时候,我会做一点挖掘,可能是几天。你可以调查一下用它来监听手机网络中的任何变化。“android.net.conn.CONNECTIVITY\u CHANGE”在连接状态发生变化的所有情况下都会被触发。所以我只使用了一个动作。问题是它在清单中的操作下拉列表中不可用。不需要为此设置权限。到目前为止,它似乎工作正常。如上所述,我需要检测设备是否具有服务提供商连接,而不是数据连接。
<receiver android:name=".ConnectivityActionReceiver">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>
@Override
public void onReceive( Context context, Intent intent )
{
    Intent startIntent;
    SharedPreferences prefs;
    String action;
    int updateType;

    action = intent.getAction();
    if ( !action.equals( ConnectivityManager.CONNECTIVITY_ACTION ) )
        return;

    /* If we don't have a connection, nothing to do */
    if ( intent.getBooleanExtra( ConnectivityManager.EXTRA_NO_CONNECTIVITY, false ) )
        return;