Ho un ricevitore broadcast nella mia app che viene attivato ogni volta che l'utente riceve una chiamata in entrata. Ora, quando succede, ho bisogno che il destinatario della trasmissione invochi un metodo specifico in un'attività specifica. Ora, ho provato a rendere questo metodo statico e quindi disponibile, ma qualcosa mi dice che è una pessima idea.Comunicazione tra BroadcastReceiver e Activity - android
Di conseguenza, ho provato a istanziare il destinatario della trasmissione all'interno della mia attività senza dichiararlo nel mio manifest, ma il problema è che - quando l'app è spenta, l'attività non esiste e quindi non posso invocare il mio metodo.
Quindi la mia domanda è: come posso invocare questo metodo quando il ricevitore broadcast viene attivato, senza renderlo "pubblico statico"?
Ecco il mio codice di attività (Ho cancellato le parti irrilevanti)
package com.silverfix.ringo.activities;
import com.silverfix.ringo.R;
import com.silverfix.ringo.activities.fragments.DataManagerFragment;
import android.app.ActionBar;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
public class RingtonesActivity extends Activity{
private DataManagerFragment dataManagerFragment;
private IntentFilter filter;
private BroadcastReceiver phoneCall;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ringtones);
ActionBar ab = getActionBar();
ab.setDisplayShowTitleEnabled(false);
ab.setDisplayHomeAsUpEnabled(true);
dataManagerFragment = new DataManagerFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(dataManagerFragment, "DataManagerFragment");
ft.commit();
filter = new IntentFilter();
filter.addAction("android.intent.action.PHONE_STATE");
phoneCall = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
dataManagerFragment.act();
}
};
registerReceiver(phoneCall, filter);
}
}
quando u riceve la chiamata il vostro applicaiton è si rivolge a background.so che u farà con l'attività (quando ur applicazione è in background) ?? – KomalG
questo metodo deve necessariamente trovarsi all'interno della classe 'Activity'? – mangusta
Cosa farà quel metodo? – Chandrakanth