1

我正在创建一个与电池相关的应用程序。我创建了一个在清单中声明的​​广播接收器:

显现 :

<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();
        }
    }
}

我想添加一个前台通知(比如这个)但是我应该如何从广播接收器添加它?(即如何从广播接收器启动服务?)

4

1 回答 1

4

在 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。

于 2018-01-05T17:06:13.077 回答