2012-03-20 12 views
5

mam ten problem w ICS, ale nie w poprzednich wersjach:Odbiornik radiowy onReceive() nigdy nie nazywa

Od app1, przesyłam transmisję i próbuje je otrzymać w App 2 aktywności. Jednak funkcja onReceive nigdy nie jest wywoływana w działaniu aplikacji 2.

Nie mogę zrozumieć, co to jest onReceive tego bloku, ponieważ zostałem wybrany poprawnie.

biegnę, a potem BroadcastSend

Każda pomoc, która pomoże mi rozwiązać ten jest cenione BroadcastReceive.

Apl1 wysłać aktywność

public class BroadcastSend extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Intent i = new Intent(); 
    i.setAction("edu.ius.rwisman.custom.intent.action.TEST"); 
    i.putExtra("url","ww.ius.edu"); 
    sendBroadcast(i); 
} 

App 2 otrzymują Aktywność

public class BroadcastReceive extends BroadcastReceiver{ 
// Display an alert that we've received a message.  
@Override 
public void onReceive(Context context, Intent intent){ 
    System.out.println("Inside onReceive"); 
    String url = intent.getExtras().getString("url"); 
    Toast.makeText(context, "BroadcastReceive:"+url, Toast.LENGTH_SHORT).show(); 
    } 

Manifest App 2

<?xml version="1.0" encoding="utf-8"?> 

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <receiver android:name="edu.ius.rwisman.BroadcastReceive.BroadcastReceive" android:enabled="true" android:exported="true"> 
     <intent-filter> 
      <action android:name="edu.ius.rwisman.custom.intent.action.TEST"/> 
     </intent-filter> 
    </receiver> 
</application> 

Odpowiedz

10

W ICS nie będzie odbierać transmisje aż aplikacja jest uruchamiana ręcznie przynajmniej once.in Androida 3.1 i nowsze, aplikacje są w stanie zatrzymania jeśli nigdy nie został uruchomiony, lub zostały zatrzymane siłą. System wyklucza te aplikacje z zamiarów transmisji. Można je włączyć za pomocą flagi Intent.FLAG_INCLUDE_STOPPED_PACKAGES, takiej jak ta.

i.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 
+0

dziękuję, że to rozwiązało problem. ale najpierw uruchamiamy działanie receive, a następnie wysyłamy. to dlaczego stanęliśmy w obliczu tego problemu? – user264953

+0

Aplikacje znajdują się w stanie zatrzymania po ich pierwszej instalacji, ale nie są jeszcze uruchomione, a gdy są ręcznie zatrzymywane przez użytkownika (w aplikacji Zarządzanie aplikacjami) ... zobacz ten http://developer.android.com/sdk/android- 3.1.html # launchcontrols – 5hssba

+2

ale jak dołączyć tę flagę do manifestu podczas rejestrowania transmisji –

Powiązane problemy