Envoyer la chaîne de service à l'activité
Im essayant d'envoyer la chaîne de service à mon activité principale, avec la diffusion.
j'ai lu dans quelques forums qu'il y a 2 façons d'utiliser la diffusion. l'une consiste à enregistrer l'activité dans le manifast et la deuxième façon est de le faire sur l'activité locale.
je voudrais savoir comment puis-je utiliser la seconde. j'ai essayé de le faire mais malheureusement je n'ai pas réussi.
s'il vous plaît dites-moi ce que im faire de mal.
Code de Service
public class MyGcmListenerService extends GcmListenerService {
private static final String TAG = "MyGcmListenerService";
//[START receive_message]
@Override
public void onMessageReceived(String from, Bundle data) {
String typemessage = data.getString("typemessage"); //typeMessage = 0 or 1 = lock or unlock
String datamessage = data.getString("datamessage"); //dataMessage = time and message that says lock or unlock
Log.d(TAG, "TypeMessage: " + typemessage);
Log.d(TAG,"DataMesaage:"+ datamessage);
Intent in = new Intent();
in.putExtra("TYPE",typemessage);
in.setAction("NOW");
sendBroadcast(in);
L'Activité Principale De Code
public class MainActivity extends Activity implements SensorEventListener, Listen {
private BroadcastReceiver statusReceiver;
private IntentFilter mIntent;
Sensor accelerometer;
SensorManager sm;
TextView acceleration;
SendValues sv;
int counter3 = 0;
int counter5 = 0;
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mIntent = new IntentFilter("NOW");
//this.registerReceiver(,new IntentFilter("status"));
sm = (SensorManager) getSystemService(SENSOR_SERVICE);
sm.registerListener(this,accelerometer, SensorManager.SENSOR_DELAY_NORMAL);
accelerometer = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
acceleration = (TextView) findViewById(R.id.sensorTxt);
statusReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String type = intent.getStringExtra("message"); //get the type of message from MyGcmListenerService 1 - lock or 0 -Unlock
sm = (SensorManager) getSystemService(SENSOR_SERVICE);
accelerometer = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
Log.d(TAG, "Status: " + type);
if (type == "1") //1 == lock
{
Toast.makeText(getApplication(), "Lock", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplication(), "UNLOCK", Toast.LENGTH_LONG).show();
}
}
};
}
@Override
protected void onResume()
{
super.onResume();
registerReceiver(statusReceiver,mIntent);
}
@Override
protected void onPause() {
if(mIntent != null) {
unregisterReceiver(statusReceiver);
mIntent = null;
}
super.onPause();
}
----------
Eh bien, je ne sais pas ce que je fais de mal, et une autre question, que dois-je mettre dans le
in.setAction("i can put here any string/action that i what? and what does it mean action? i just want to send string to the main activity, what action should i do"?)
onReceive
méthode est appelée ou non?la méthode n'est pas appelée
cochez cette stackoverflow.com/a/30235369/2032561
OriginalL'auteur Bolandian Eran | 2016-05-19
Vous devez vous connecter pour publier un commentaire.
LocalBroadcastManager est la meilleure solution pour résoudre ce type de problème. J'ai mis en œuvre LocalBroadcastManager à votre existant. Il est très facile. Espérons que cela fonctionnera. Vous code ressemblera à ceci
Et passer votre valeur de notification push quelque chose comme cela
OriginalL'auteur Masum
vous pouvez l'utilisateur
LocalBroadcastManager
à réaliser ce que vous voulez.comme dans votreservice
appeler cette méthode lorsque vous souhaitez envoyer des données.Dans votre Activité
enregistrer un
Receiver
dansonCreate()
et de
onCreate()
ce code.espère que vous avez eu une idée.
passer
this
dans legetInstance(this).sendBroadcast(intent);
si vous avez des question dites le moi.
si
this
est utilisé que les méthodes ne peuvent pas être statiqueOriginalL'auteur Devendra Singh
vous pouvez faire 2 choses :
1. vous pouvez faire une de la classe et de mettre en œuvre Parcelable .
2. l'utilisation d'une Intention de service au lieu de Service .
Consultez ci-dessous le lien :
http://android-er.blogspot.in/2013/03/send-data-from-intentservice-to.html
http://www.sanfoundry.com/java-android-program-send-data-service-activity/
j'ai partagé le lien de mise à jour de réponse
merci, je vais vérifier
merci d'accepter de répondre si ma réponse vous a aidé dans la résolution de problème . Merci . j'espère que vous problème est résolu
OriginalL'auteur young_08