2010-08-10 14 views

risposta

14

Purtroppo non puoi farlo.

L'unica soluzione che ho trovato (mod) è di aprire prima uno Activity con uno stile di dialogo e quindi effettuare la chiamata lì.

+0

Ok allora ho cercato di utilizzare riceventi per la radiodiffusione. tuttavia posso solo catturare gli intenti quando lo stato cambia, ma se il bluetooth è disabilitato e voglio disabilitarlo, lo stato non cambia e non mi viene mai notificato ... – RoflcoptrException

+0

Scusa, non capisco cosa stai dicendo. Puoi spiegare di nuovo? – Macarse

+0

Poiché non riesco a utilizzare startActivityForResult(), ho provato a utilizzare BroadcastReceivers per rilevare gli eventi se lo stato del bluetooth è cambiato. Sfortunatamente lo stato del bluetooth cambia solo se ad es. il bluetooth non è abilitato e l'utente fa clic su Sì per attivarlo. Quindi il mio broadcastReceiver viene informato. Ma se il bluetooth non è abilitato e l'utente fa clic su no, lo stato del bluetooth non cambia e quindi il mio broadcastReceiver non viene notificato. – RoflcoptrException

11

So che questa è una domanda precedente, ma mi sono imbattuto in una simile sfida e la mia soluzione era quella di creare un'attività con Android: theme = "@ android: style/Theme.NoDisplay", quindi chiamare startActivityForResult() da quello. Ciò crea un'attività invisibile che può sia richiedere che ricevere gli intenti, prima di scrivere i dati da qualche parte e poi finire da sé.

+2

Stai molto attento con "@android: style/Theme.NoDisplay" ... Ho trovato che ha aggiunto un ritardo di 5 secondi tra la chiamata startActivityForResult() e la finestra di dialogo che mostra. Passando a "@android: style/Theme.Translucent.NoTitleBar.Fullscreen" il ritardo è andato via. Altrimenti, questo è ciò che ha funzionato per me. – TrevorWiley

0

Penso che la soluzione è quella di iniziare l'attività dal vostro servizio quindi avere la legano l'attività al servizio e registrare un callback

Problemi correlati