Diálogo de alerta de Android desde dentro de un servicio de intenciones
Quiero mostrar un diálogo de alerta desde dentro de un servicio de intenciones.
AlertDialog alertDialog = new AlertDialog.Builder(this).create();
Esto arroja la siguiente excepción
- IntentService y AlarmManager
- Android SignalR debe implementarse como Service o IntentService?
- ¿Necesita ayuda para descargar imágenes de fondo en Android?
- Evitar el cambio de orden de la presentación de la aplicación Android después del lanzamiento del servicio intencional
- Cómo verificar IntentService start
Unable to add window — token null is not for an application
He intentado IntentService.this y getApplicationContext () también. Entre yo no quiero hacerlo usando una actividad. Sólo quiero mostrar un diálogo de alerta simple con un poco de texto.
- La notificación creada por IntentService utiliza siempre una intención incorrecta
- StartForeground para IntentService
- ¿Cómo hacer que WakefulService (IntentService) espere hasta que MediaPlayer termine?
- El método onHandleIntent () no se llama
- Android, Mostrar alertaDialog en lugar de notificación cuando la aplicación está abierta
- Reschedule IntentService con AlarmManager - se ignora la información adicional intencional
- Async tarea no funciona correctamente (doInBackground no se ejecuta) cuando el servicio se ejecuta en segundo plano, Android
- Android AlarmManager para continuar después de reiniciar / eliminado de RecentTaskManager
Activity
necesidad para la exhibición AlertDialog
, porque no podemos exhibir el Dialog
de cualquier Service
Solución.
Crear Activity
como tema de diálogo e iniciar esa Activity
desde el Service
.
Solo tienes que registrarte Activity
en menifest.xml
como sigue
android:theme="@android:style/Theme.Dialog"
o
android:theme="@android:style/Theme.Translucent.NoTitleBar"
MyDialog.java
public class MyDialog extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final AlertDialog alertDialog = new AlertDialog.Builder(this).create(); alertDialog.setTitle("your title"); alertDialog.setMessage("your message"); alertDialog.setIcon(R.drawable.icon); alertDialog.show(); } }
Sólo si establece su tipo de alerta de tipo de TYPE_SYSTEM_ALERT
en TYPE_SYSTEM_ALERT
, se mostrará desde un servicio de intenciones.
AlertDialog alertDialog = new AlertDialog.Builder(this).create();
Agregue éstos después de su código:
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); alertDialog.show();
Pero, tiene un costo:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
Por favor visita
https://github.com/selmantayyar/Custom-SMS-Popup
¡Le asusta ayudarle !!
O lo que puede hacer es registrar anActivity en menifest.xml como sigue
android:theme="@android:style/Theme.Dialog"
o
android:theme="@android:style/Theme.Translucent.NoTitleBar"
Y trabajar alrededor de él
El problema se debe a Contexto . No puede utilizar esto como Contexto en el servicio de intención. Así que necesita pasar una variable de contexto de su servicio de intención a su cuadro de diálogo de alerta. Me gusta,
AlertDialog alertDialog = new AlertDialog.Builder(context).create();