У меня есть служба, в которой я хочу иметь приемник местного вещания. Я хочу получить значение от активности до моих сервисов onCreate.Android: как иметь приемник местного вещания внутри службы
Примечание. Я могу получить значение из своей деятельности в службу onStartCommand() с использованием намерения. Но здесь я хочу получить ценность от активности в onCreate службы.
Ниже мой файл службы:
public class MediaServiceSimha extends Service {
private MediaPlayer player;
String musicpath;
private ResponseReceiver receiver;
public MediaServiceSimha() {}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
localBroadcastManager.unregisterReceiver(receiver);
super.onDestroy();
}
@Override
public boolean onUnbind(Intent intent) {
return super.onUnbind(intent);
}
@
Override
public int onStartCommand(Intent intent, int flags, int startId) {
player.start();
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onCreate() {
super.onCreate();
IntentFilter broadcastFilter = new IntentFilter("com.example.myintentserviceapp.intent_service.ALL_DONE");
receiver = new ResponseReceiver();
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
localBroadcastManager.registerReceiver(receiver, broadcastFilter);
}
public class ResponseReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
musicpath = intent.getStringExtra("musicpath");
}
}
}
Ниже мой файл деятельности, где я хочу передать значение, называемое musicpath
public class ServiceTest extends AppCompatActivity {
Intent intent;
public static final String TEXT_INPUT = "inText";
//MediaServiceSimha mediaServiceSimha;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
L.m("activity_oncreate_starting");
setContentView(R.layout.activity_service_test);
intent= new Intent(this,MediaServiceSimha.class);
startService(intent);
Intent broadcastIntent = new Intent();
broadcastIntent.setAction("com.example.myintentserviceapp.intent_service.ALL_DONE");
broadcastIntent.putExtra("musicpath", "/storage/emulated/0/Download/1.mp3");
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
localBroadcastManager.sendBroadcast(broadcastIntent)
}
}
После запуска, он говорит, что значение musicpath равно нулю.
Как это сделать?
вам вообще не нужно: передайте «музыкальный путь» в дополнительных целях при вызове 'startService' – pskink
. Я очень смущен вашим вопросом: факт, что вы регистрируете вещательный приемник в onCreate вашего сервиса, Я получаю намерение там. просто передавайте любую информацию, которая вам нужна в намерении, каждый раз, когда вам нужно использовать startService ... – Creos
Но почему вы это делаете? Если вы действительно хотите передать PATH для обслуживания, тогда положите его на «Экстра (..)» и получите в сервисе –