我正在制作与电池相关的应用。 我创建了一个在清单中声明的广播接收器:
清单:
<receiver android:name=".PowerConnectionReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
</intent-filter>
</receiver>
接收者:
public class PowerConnectionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_POWER_CONNECTED)) {
Toast.makeText(context, "The device is charging", Toast.LENGTH_SHORT).show();
} else {
intent.getAction().equals(Intent.ACTION_POWER_DISCONNECTED);
Toast.makeText(context, "The device is not charging", Toast.LENGTH_SHORT).show();
}
}
}
我想添加前景通知(例如this一个) 但是我应该如何从广播接收器中添加它呢? (即如何从广播接收器开始服务?)
答案 0 :(得分:2)
在onReceive()启动服务:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
context.startForegroundService(intent);
} else {
context.startService(intent);
}
在服务onCreate()中做类似的事情:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
startForeground(1, new Notification());
}
一些制造商已经在Android N上支持这些新的背景限制,这就是为什么你们也可能支持这种API的原因。