У меня есть основное занятие, которое ждет случайных сообщений от веб-службы и обрабатывает их. После завершения процесса он показывает пользователю сообщение. Пользователь не всегда находится в основном действии, поэтому он не получает сообщение, даже если процесс выполняется, пока не вернется к основному действию. Вопрос в том, могут ли пользователи показывать сообщения, пока они не находятся в основной деятельности? Этот код, который я использую в основном упражнении:
public void showAuthRequested(String val) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("auth requested");
builder.setMessage("requesting authorization, do you accept?");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
authorized = false;
SharedPreferences pref1 = getApplicationContext().getSharedPreferences("Mysets", 0); // 0 - for private mode
SharedPreferences.Editor editor = pref1.edit();
editor.putBoolean("authorized",false);
editor.commit();
webRequests("https://xxx.xxx.xxx.xxx/xxx/xxx/accessResult.php", "true");
}
});
builder.setNegativeButton("Cancel", null);
// create and show the alert dialog
final AlertDialog dialog = builder.create();
runOnUiThread(new Runnable() {
@Override
public void run() {
dialog.show();
}
});
Я пытался добавить приемник Broadcast в соответствии с комментарием Prashant.J
public class AuthReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO: This method is called when the BroadcastReceiver is receiving
// an Intent broadcast.
//throw new UnsupportedOperationException("Not yet implemented");
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Transfer mission requested");
builder.setMessage("EUD is requesting control, do you accept?");
builder.setNegativeButton("Cancel", null);
builder.setPositiveButton("ok",null);
final AlertDialog dialog = builder.create();
dialog.show();
}
Но я получил эту ошибку
E / AndroidRuntime: ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основной процесс: com.goldlink.nglsv3, PID: 14742 java .lang.RuntimeException: Невозможно запустить приемник com.goldlink.nglsv3.AuthReceiver: android .view.WindowManager $ BadTokenException : Невозможно добавить окно - токен null недействителен; ваша деятельность работает? в android .app.ActivityThread.handleReceiver (ActivityThread. java: 3614) в android .app.ActivityThread.access $ 1300 (ActivityThread. java: 238) в android .app.ActivityThread $ H. handleMessage (ActivityThread. java: 1798) в android .os.Handler.dispatchMessage (Handler. java: 106) в android .os.Looper.l oop (Looper. java: 214 ) в android .app.ActivityThread.main (ActivityThread. java: 7073) в java .lang.reflect.Method.invoke (собственный метод) в com. android .internal.os.RuntimeInit $ MethodAndArgsCaller .run (RuntimeInit. java: 494) в com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 965) Причина: android .view.WindowManager $ BadTokenException: Невозможно добавить window - токен null недействителен; ваша деятельность работает? в android .view.ViewRootImpl.setView (ViewRootImpl. java: 1056) в android .view.WindowManagerGlobal.addView (WindowManagerGlobal. java: 381) в android .view.WindowManagerImpl.addIIllImpl (WindowMan . java: 93) на android .app.Dialog.show (Диалог. java: 470) на com.goldlink.nglsv3.AuthReceiver.onReceive (AuthReceiver. java: 27) на android. app.ActivityThread.handleReceiver (ActivityThread. java: 3605) по android .app.ActivityThread.access $ 1300 (ActivityThread. java: 238) по android .app.ActivityThread $ H.handleMessage (ActivityThread. java: 1798) в android .os.Handler.dispatchMessage (Обработчик. java: 106) в android .os.Looper.l oop (Looper. java: 214) в android .app.ActivityThread.main (ActivityThread. java: 7073) в java .lang.reflect.Method.invoke (собственный метод) в com. android .internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit. java: 494) по тел. android .internal.os.ZygoteInit.main (ZygoteInit. java: 965) I / Процесс: отправка сигнала. PID: 14742 SIG: 9 Отключен от целевой виртуальной машины, адрес: 'localhost: 8617', транспорт: 'sock