为特定活动实现广播接收器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为特定活动实现广播接收器相关的知识,希望对你有一定的参考价值。

我正在构建一个android应用程序,用于为一组问题提供反馈。根据服务器数据,每次问题都不一样。在下面的代码中,我在QuestionAnswerActivity中实现了提交按钮,可以保存数据在线和离线。我想实现一个BroadcastReceiver,它应该检测QuestionAnswerActivity中的网络变化并提交存储在本地数据库中的数据(答案)(离线)。它还应该显示适当的toast消息。例如:“没有互联网连接”或“Internet连接的”。

答案

在清单中注册广播并使用以下代码。

public class NetworkReceiver extends BroadcastReceiver {

Cursor cursor;
SQLHelper helper;
Boolean IsSubmitted=false;
Context c;

@Override
public void onReceive(Context context, Intent intent) {
    helper = new SQLHelper(context);
    this.c = context;
    pt = new ProcessTask();
    if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
        if (networkInfo != null && networkInfo.getDetailedState() == NetworkInfo.DetailedState.CONNECTED) {
            Log.d("Network", "Internet YAY");

            // Code when internet is connected 

            cursor = helper.getProcessTask(context);
            getdataFromSql(cursor,context);

        } else if (networkInfo != null && networkInfo.getDetailedState() == NetworkInfo.DetailedState.DISCONNECTED) {
            Log.d("Network", "No internet :(");


        }
    }
}

在Manifest中添加

<receiver
        android:name=".NetworkReceiver">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>

以上是关于为特定活动实现广播接收器的主要内容,如果未能解决你的问题,请参考以下文章

通知广播接收器在活动中不工作

无法使用广播接收器检测用户活动转换

为啥当主应用停止时我的小部件广播接收器服务停止

如何使用警报管理器将数据从片段传递到广播接收器

广播接收器类可以进行休息客户端调用吗?

从广播接收器更新片段中的列表视图