Cześć,
Od niedawna grzebię trochę w Androidzie i natrafiłem na taki problem.
Chcę przesłać swojego Intent'a pomiędzy dwiema applikacjami.
Nadawcą jest jakiś tam mój serwis, a odbiorcą nieco zmodyfikowany androidowy Music Player.
Po stronie mojego serwisu nadawcy mam kod:
private someFunction(long id) {
Intent intent = new Intent();
intent.setAction(MY_CUSTOM_INTENT_NAME);
Uri uri = ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, id);
intent.setData(uri);
sendBroadcast(intent);
}
Po stronie odbiorcy (moja modyfikacja Music Player):
public class MyCustomIntentBroadcastReceiver extends BroadcastReceiver {
public static final String MY_CUSTOM_INTENT_NAME = "com.android.musik.intent.action.SOMEACTION"; // to samo co MY_CUSTOM_INTENT_NAME w nadawcy
@Override
public void onReceive(Context context, Intent intent) {
Log.d("MR", "MyCustomIntentBroadcastReceiver onReceive intent: " + intent.getAction());
if (CHANGE_SONG_INTENT.equals(intent.getAction())) {
Log.d("MR", "Got expected intent");
}
}
}
W manifeście oczywiście dodałem:
<receiver android:name="com.android.music.MyCustomIntentBroadcastReceiver">
<intent-filter>
<action android:name="com.android.musik.intent.action.SOMEACTION" />
</intent-filter>
</receiver>
Czyli wszystko wygląda mniej więcej tak jak ktoś opisał.
W logach nie dostaje żadnej informacji o błędach (nie mam żadnych wyjątków), oraz widzę, że Intent został wysłany.
Jednak niestety Intent pozostaje nieodebrany (brak loga zawierającego: "MyCustomIntentBroadcastReceiver onReceive intent: ").
Czy ktoś może wie, o czym zapomniałem, co jest źle?