public class MyBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "MyBroadcastReceiver";
private static final String ACTION = "android.media.AUDIO_BECOMING_NOISY";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION)) {
Intent service = new Intent(context, MyService.class);
context.startService(service);
}
}
}
1## 首先注册个广播接受者指定要跳转的服务。
public class MyService extends Service {
private static final String TAG = "MyService";
/**
* 绑定服务时才会调用
* 必须要实现的方法
*/
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
/**
* 首次创建服务时,系统将调用此方法来执行一次性设置程序
* (在调用 onStartCommand() 或 onBind() 之前)。
* 如果服务已在运行,则不会调用此方法。该方法只被调用一次
*/
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onCreate() {
super.onCreate();
Log.i(TAG, "这里是消息通知栏");
Notification notification = new Notification.Builder(this)
.setContentTitle("有新消息啦!")
.setContentText("这里是ContentText")
.setTicker("显示第二个通知")
.setSmallIcon(R.mipmap.ic_launcher)
.build();
startForeground(1, notification);
}
/**
* 每次通过startService()方法启动Service时都会被回调。
*/
@Override
public int onStartCommand(final Intent intent, int flags, final int startId) {
Log.i(TAG, "onStartCommand called.");
return super.onStartCommand(intent, flags, startId);
}
/**
* 服务销毁时的回调
*/
@Override
public void onDestroy() {
super.onDestroy();
Log.i(TAG, "onDestroy() executed");
}
/**
* 创建Binder对象,返回给客户端即Activity使用,提供数据交换的接口
*/
public class MyBinder extends Binder {
void startDownload() {
new Thread(new Runnable() {
@Override
public void run() {
Log.i(TAG, "startDownload() executed");
}
}).start();
}
}
}
2 ##这是自定义的服务内容,仅仅一个前台服务而已
<receiver android:name=".MyBroadcastReceiver">
<intent-filter android:priority="1000">
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.media.AUDIO_BECOMING_NOISY" />
</intent-filter>
</receiver>
<service android:name=".MyService" />
3 ##在Manifest.xml文件里注册广播和服务,并添加权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />