【问题标题】:POWER connected and disconnected listenersPOWER 连接和断开连接的听众
【发布时间】:2011-06-27 21:30:56
【问题描述】:

我正在聆听我的银河系的电源连接和断开连接。

我创建了 2 个广播接收器,一个用于连接,一个用于断开连接。

当我尝试实施时,即使断开电源线,我也只能得到连接的数据。

意图已发送,但看起来是错误的。

这是活动代码:

        //      Handle Power On
    PowerConnectedBCReceiver myPowerConnectedBCReceiver = new PowerConnectedBCReceiver();
    IntentFilter intentPowerOnFilter = new IntentFilter();
    intentPowerOnFilter.addAction("android.intent.action.ACTION_POWER_CONNECTED");
    registerReceiver(myPowerConnectedBCReceiver, intentPowerOnFilter);

    BroadcastReceiver PowerConnectedReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            showToast("connected");
        }
    };



    //      Handle Power Off
    PowerConnectedBCReceiver myPowerDisonnectedBCReceiver = new PowerConnectedBCReceiver();
    IntentFilter intentPowerDisconnectedOnFilter = new IntentFilter();
    intentPowerDisconnectedOnFilter.addAction("android.intent.action.ACTION_POWER_DISCONNECTED");
    registerReceiver(myPowerDisonnectedBCReceiver, intentPowerDisconnectedOnFilter);

    BroadcastReceiver PowerDisconnectedReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            showToast("disconnected");
        }
    };

注册两个 BC 来做这项工作

        registerReceiver(PowerDisconnectedReceiver, new IntentFilter("com.neglected.POWER_DISCONNECTED"));
    registerReceiver(PowerConnectedReceiver, new IntentFilter("com.neglected.POWER_CONNECTED"));

BroadCast 连接代码:

public class PowerConnectedBCReceiver extends BroadcastReceiver
{ 
@Override
public void onReceive(Context context, Intent intent) 
{
    Toast.makeText(context,  "Phone was connected to power" , Toast.LENGTH_LONG).show();
    Intent tIntent = new Intent("com.neglected.POWER_CONNECTED");
    context.sendBroadcast(tIntent);
} 

}

广播断线代码:

public class PowerDisconnectedBCReceiver extends BroadcastReceiver
{ 
@Override
public void onReceive(Context context, Intent intent) 
{

    Toast.makeText(context,  "Phone was disconnected from power" , Toast.LENGTH_LONG).show();
    Intent tIntent = new Intent("com.neglected.POWER_DISCONNECTED");
    context.sendBroadcast(tIntent);
} 

}

代码错了吗? 我可以听这两个动作吗?分开? 我看不到通过 CONNNECTED 操作发送的额外内容,是吗?

【问题讨论】:

    标签: android broadcastreceiver intentfilter


    【解决方案1】:

    不确定您的最后两个课程 (*BCReeivers) 应该做什么。您的第一个代码块看起来不错。如果这很重要,它将被限制在封闭 Activity 的生命周期内。

    对于 Galaxy S,您可能无法依赖这些 Intent。特别是,我发现 Verizon Fascinate(他们的 Galaxy S 版本)非常有问题。见这里:http://devblog.bu.mp/how-to-ddos-yourself

    【讨论】:

    • 谢谢,现在,我希望他们做的只是 Toast 进行调试。谢谢。这个想法是我的 Activity 中有一个复选框,当更改状态时,它应该在我的服务中注册/取消注册广播侦听器。 *在我将它推送到我的服务之前,我希望看到它在 Activity 中工作。
    • 感谢链接 michal。我读了它,我的“坏”行为只是我在连接和断开电话时都收到了 CONNECTED 事件。我会继续寻找。再次感谢
    【解决方案2】:

    我的广播实例化出现错误。我错误地使用了 PowerConnectedBCReceiver 而不是 PowerDisconnectedBCReceiver

    问题解决了。

    【讨论】:

      猜你喜欢
      • 2021-10-17
      • 2021-10-14
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      • 2012-11-08
      • 2016-05-02
      • 2013-01-23
      • 1970-01-01
      相关资源
      最近更新 更多