兩個應用通過廣播BroadCast傳送數據

     今天碰到一個問題,就是一個應用activity向另一個應用的service傳送數據。AIDL肯定每個人都會知道。不過AIDL個人感覺有點麻煩,就想着能不能用廣播發送數據。於是,動手寫了Demo,經測試,在同一個開發板上,一個應用通過廣播向另一個應用發送數據,另一個應用能夠接收到數據的。

Demo如下:

應用一:

package com.example.activity1;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener{

	private Button btn;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		btn = (Button) findViewById(R.id.send);
		btn.setOnClickListener(this);
	}
	
	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.send:
			Toast.makeText(MainActivity.this, "開始發送廣播", Toast.LENGTH_SHORT).show();
			Intent intent = new Intent("SEND_BROCAST");
			intent.putExtra("value", 2);
			MainActivity.this.sendBroadcast(intent);
			break;
		}
	}
}


另一個應用:

package com.example.activity2;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		this.startService(new Intent(MainActivity.this, receiveService.class));
	}
}

這個應用中的service:

package com.example.activity2;

import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;

public class receiveService extends Service{

	private ComandReceiver cr;
	@Override
	public IBinder onBind(Intent intent) {
		return null;
	}
	
	@Override
	public void onCreate() {
		super.onCreate();
		
		cr = new ComandReceiver();
		
		IntentFilter filter = new IntentFilter();
		filter.addAction("SEND_BROCAST");
		registerReceiver(cr, filter);
	}
	
	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		
		return super.onStartCommand(intent, flags, startId);
	}

	public class ComandReceiver extends BroadcastReceiver{

		public int status;
		@Override
		public void onReceive(Context context, Intent intent) {
			status = intent.getIntExtra("value", -1);
			System.out.println(status);
		}
	}
}


打印結果如下:




activity與service交互的方法:  通過廣播(兩者可以互相發送),好用!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章