Ich versuche, eine Zeichenfolge vom Dienst an meine Hauptaktivität mit Broadcast zu senden. Ich habe in ein paar Foren gelesen, dass es zwei Möglichkeiten gibt, Broadcast zu verwenden. Einer besteht darin, die Aktivität im Manifest zu registrieren, und der zweite Weg besteht darin, dies auf lokaler Ebene zu tun. Ich würde gerne wissen, wie kann ich den zweiten Weg verwenden. Ich habe versucht, es zu tun, aber leider ist es mir nicht gelungen.Sende Zeichenfolge vom Dienst an die Aktivität
Bitte sagen Sie mir, was ich falsch mache.
Servicecode
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);
Hauptaktivitätscode
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();
}
----------
Nun, ich weiß nicht, was falsch im tut, und eine andere Frage, was ich brauche, zu tun in der
setzenin.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' Methode wird aufgerufen oder nicht? –
Die Methode wird nicht aufgerufen –
überprüfen Sie diese http://StackOverflow.com/A/30235369/2032561 – Bharatesh