Я нашел уродливый способ решения своей проблемы.После приостановки приложения A приложение A ожидает намерения от B, который выполняется в другом процессе.Затем, когда этот процесс получает сообщение от B, он записывает информацию в файл.Основной поток A thas заблокирован в цикле, периодически читает файл.Когда файл содержит ожидаемую информацию, условие становится ложным, а поток разблокирован.
В деталях он дает:
В приложение A:
Thread.sleep(1000);
context.startActivity(message); // starting app B
// Blocking A
while (!auth) // waits an authorization from B
{
try {
FileInputStream fIn = c.openFileInput("authorization.txt");
InputStreamReader isr = new InputStreamReader(fIn);
char buf[] = new char[1];
isr.read(buf);
String res = new String(buf);
isr.close();
if (res.equals("1"))
{
auth = true;
System.out.println("READ OK");
}
}
ВВ приложении A в манифесте должен быть объявлен широковещательный приемник с тегом android: process ": p2":
<receiver android:name="reporter.ReporterReceiver" android:process=":p2">
<intent-filter>
<action android:name="andro.jf.reporterResponse" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
, а получатель должен быть:
public class ReporterReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Bundle extra = intent.getExtras();
System.out.println("ANSWER RECEIVED");
if (extra != null)
{
String auth = extra.getString("authorization");
//Reporter.authorization = contact;
// Write the string to the file
try {
FileOutputStream fOut = context.openFileOutput("authorization.txt", Context.MODE_PRIVATE );
OutputStreamWriter osw = new OutputStreamWriter(fOut);
osw.write(auth);
osw.flush();
osw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Я знаю,это некрасиво ... но работает, по крайней мере в эмуляторе.