我想做的是将数据从服务S传递到活动A.
但是,在我的情况下,A没有启动S然后等待它的答案:S总是在后台运行。
我想使用附加了捆绑包的Intent,因为我的数据是字符串和布尔值。
我不知道如何继续完成这项工作。 (我已经阅读了有关BroadcastReceiver和其他内容的信息)。
以下是我在服务中启动活动的时间:
public void answerFromServer(ArrayList<Contact> listeDemand, ArrayList<Contact> listeAccepted){
Intent intent = new Intent(getApplicationContext(), UpdateContactActivity.class);
Bundle bundle = new Bundle();
ArrayList<String> listAllDemandName = new ArrayList<>();
ArrayList<Integer> listAllDemandId = new ArrayList<>();
int i = 0;
ArrayList<String> listAllAccName = new ArrayList<>();
ArrayList<Integer> listAllAccId = new ArrayList<>();
int j = 0;
for(Contact contact : listeDemand){
String string = contact.getName();
int Id = contact.getId();
Boolean online = contact.isOnline();
listAllDemandName.add(string);
listAllDemandId.add(Id);
bundle.putBoolean("onlineD" + Integer.toString(i), online);
i++;
}
for(Contact contact : listeAccepted){
String string = contact.getName();
int Id = contact.getId();
Boolean online = contact.isOnline();
listAllAccName.add(string);
listAllAccId.add(Id);
bundle.putBoolean("onlineA" + Integer.toString(j), online);
j++;
}
bundle.putStringArrayList("nameDemandList", listAllDemandName);
bundle.putIntegerArrayList("idDemandList", listAllDemandId);
bundle.putStringArrayList("nameAccList", listAllAccName);
bundle.putIntegerArrayList("idAccList", listAllAccId);
intent.putExtra("contactRequest", bundle);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
android.support.v4.app.NotificationCompat.Builder mBuilder =
new android.support.v4.app.NotificationCompat.Builder(getBaseContext())
.setSmallIcon(R.drawable.user_jaune)
.setContentTitle("RG 2.1")
.setContentText("Mise(s) Ã jour contact")
.setContentIntent(pendingIntent)
.setDeleteIntent(pendingIntent)
.setAutoCancel(true);
NotificationManager mNotificationManager =
(NotificationManager) getBaseContext().getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(50, mBuilder.build());
谢谢,
答案 0 :(得分:0)
就像你说的那样。我不知道在S发布A
时如何读取A中的值
真正导致A发射的原因并不重要。所有数据都在捆绑中,因此onCreate()
中的这类内容可以解决您的问题:
Bundle contactRequest;
Bundle extras = getIntent().getExtras();
if (extras != null) {
contactRequest = extras.getBundle("contactRequest");
// then get all the stuff you placed there the same way
idAccList = contactRequest .getIntegerArrayList("idAccList");
...
}