5

Scrivo 1 app per Android 4.0 ed è avviata tramite broadcastreceiver. Il mio codice è qui sotto:Impossibile ricevere trasmissione in ICS

In AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" /> 
    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <receiver android:name="com.Android.Exercise.StartUpReceiver" 
      android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED"/> 
       <!--<action android:name="StartInstrument" /> 
       <action android:name="PrintControlName" />  -->  
      </intent-filter> 
     </receiver>   
     <service android:enabled="true" android:name="StartAUT_Service"> 
      <intent-filter> 
       <action android:name="com.Android.Exercise.StartAUT_Service" /> 
      </intent-filter> 
     </service> 
    </application> 

In classe StartUpReceiver:

public class StartUpReceiver extends BroadcastReceiver{ 
    @Override 
    public void onReceive(Context context, Intent intent) { 

     Log.i("Broadcast", "onReceive"); 

     Intent i = null; 

     if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){ 
      i = new Intent(context, StartAUT_Service.class);   
      i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     } 

     context.startService(i);    
    }  
} 

Dopo aver riavviato il dispositivo, non posso ricevere broardcast. Please help me, grazie mille

risposta

1

Prova

<uses-permission android:name="android.intent.action.BOOT_COMPLETED" /> 

di sotto di Internet utilizza il permesso

+0

Anche se aggiungo il tag, ma non riesco ancora a ricevere il comando di trasmissione. In Android 2.2, è ok, ma Android 4.0, non funziona ancora. – user1266236

+0

Ho riavviato il mio dispositivo ma ancora non eseguo broadcast.hix | T_T | – user1266236

+0

hai rimosso quel tag di autorizzazione sotto l'attività? –

7

A partire da Android 3.0, lo stato dell'applicazione è stato introdotto. Tutte le applicazioni ora sono installate con uno stato impostato su inattivo, rendendo inattivi tutti i destinatari di BroadcastReceivers.

Per rendere lo stato attivo, l'utente deve avviare l'applicazione almeno una volta e il sistema operativo attiverà automaticamente l'app e tutti i suoi BroadcastReceivers.

Nel tuo caso, devi aggiungere un'attività, sia essa un contratto di licenza o una pagina di aiuto. Ciò creerà un'icona per la tua app affinché l'utente possa fare clic e attivare l'app.

Si noti che lo stato dell'applicazione verrà ripristinato inattivo se l'utente chiude forzatamente l'applicazione.

ho affrontato un problema simile: Android ICS not receiving data sms

Spero che risolve il problema o almeno si mette sulla strada giusta.

saluti, Ahmad

0

È necessario eseguire le seguenti operazioni per superare this funzione di sicurezza.

Se il vostro livello di API è inferiore a 12, quindi impostare le seguenti al vostro intento prima di diffonderlo:

i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | 32); 

In caso contrario, aggiungere il seguente flag per includere i pacchetti che vengono contrassegnati come Arrestato troppo:

i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent. FLAG_INCLUDE_STOPPED_PACKAGES); 
Problemi correlati