我想在手机放入充电器后做一些事情。所以我创建了ChargingOnReciever
:
public class ChargingOnReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
context.startActivity(someActivity);
Log.d(TAG, "Phone was connected to power");
}
}
我想让我的接收器监听android.intent.action.ACTION_POWER_CONNECTED
,所以我把它放入清单:
<reciever android:name=".ChargingOnReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
</intent-filter>
</reciever>
但ChargingOnReceiver
显然是没有启动时,我把我的G1充电器(连接到我的笔记本电脑通过USB电缆)。任何帮助是非常感谢。
4条答案
按热度按时间of1yzvn41#
我花了5个小时才找到这个愚蠢的bug。我认为Android Eclipse插件应该在清单xml中做一些语法检查。
wgx48brx2#
对于任何试图注册“android.intent.action.ACTION_POWER_CONNECTED”和“android.intent.action.ACTION_POWER_DISCONNECTED”接收器的人,我想添加:
作为Android 8.0(API级别26)后台执行限制的一部分,面向API级别26或更高级别的应用不能再在其清单中为隐式广播注册广播接收器。但是,目前有几个广播不受这些限制的限制。无论应用的目标是哪个API级别,应用都可以继续为豁免的广播注册侦听器。
上述两项广播已不在豁免广播名单内。请参阅以下文件:
https://developer.android.com/guide/components/broadcast-exceptions
kninwzqo3#
1.不要从
BroadcastReceiver
启动Activity。1.您是否在插入USB电缆时检查了LogCat,以查看是否有任何记录的消息可以解释您的问题?
zi8p0yeb4#
似乎我们无法在post android 8上以the answer的形式接收ACTION_POWER_CONNECTED和ACTION_POWER_DISCONNECTED事件,即使在运行时或后台。现在唯一的方法是使用计时器手动检查
如果有更好的方法,请分享。