当用户点击通知时,我想启动一个Activity和两个Intent Service。
有可能吗?如果有,有没有人能给我一些建议?
假设我无法控制Activity。活动属于第三方应用。
请不要告诉我从你的Activity启动intent服务。我知道这个。
按照步骤操作希望对您有所帮助
1)创建BroadCastReceiver
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Start Activity
// Start Services
}
}
2)在通知时点击广播。
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Intent intent = new Intent(context, MyBroadcastReceiver.class);
PendingIntent contentIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
Notification notification = new Notification(icon, ticker, when);
notification.setLatestEventInfo(mSmartAndroidActivity, title, message, contentIntent);
notification.flags = Notification.FLAG_AUTO_CANCEL;
notificationManager.notify(0, notification);
用PendingIntent.getBroadcast
代替PendingIntent.getActivity
3) BroadcastReceiver的onReceive()方法
->调用第三方活动
-> Start services
Biraj给出的答案也可以。
但是你必须在你的manifest文件中声明BroadcastReceiver,以及你从BroadcastReceiver开始的所有活动和服务。
所以我没有选择上述方式。
我是如何实现的?
我已经启动了一个Intent服务,从那里我开始活动并向服务器发出同步请求。通过这种方式,我不必在清单文件中声明BroadcastReceiver。
我相信写更少的代码,所以我选择了上面的Intent Service方式